<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0148)file:///C:/Documents%20and%20Settings/duoyi/%E6%A1%8C%E9%9D%A2/Django%20%20%20User%20authentication%20in%20Django%20%20%20Django%20documentation.htm -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="translated-ltr"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <meta http-equiv="Content-Language" content="en-us">
    <title>Django的| |在Django Django文档的用户身份验证</title>
    <meta name="ROBOTS" content="ALL">
    <meta http-equiv="imagetoolbar" content="no">
    <meta name="MSSmartTagsPreventParsing" content="true">
    <meta name="Copyright" content="Django Software Foundation">
    <meta name="keywords" content="Python, Django, framework, open-source">
    <meta name="description" content="Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.">
    <link href="./Django的   在Django Django文档的用户身份验证2222222_files/base.css" rel="stylesheet" type="text/css" media="screen">
    <link href="./Django的   在Django Django文档的用户身份验证2222222_files/print.css" rel="stylesheet" type="text/css" media="print">
    
  
  <link rel="stylesheet" href="./Django的   在Django Django文档的用户身份验证2222222_files/docs.css" type="text/css">
  <link rel="stylesheet" href="./Django的   在Django Django文档的用户身份验证2222222_files/pygments.css" type="text/css">

  <link type="text/css" rel="stylesheet" charset="UTF-8" href="./Django的   在Django Django文档的用户身份验证2222222_files/translateelement.css"><script type="text/javascript" charset="UTF-8" src="./Django的   在Django Django文档的用户身份验证2222222_files/main.js"></script><script type="text/javascript" charset="UTF-8" src="./Django的   在Django Django文档的用户身份验证2222222_files/element_main.js"></script><link type="text/css" rel="stylesheet" charset="UTF-8" href="./Django的   在Django Django文档的用户身份验证2222222_files/translateelement(1).css"><script type="text/javascript" charset="UTF-8" src="./Django的   在Django Django文档的用户身份验证2222222_files/main(1).js"></script><script type="text/javascript" charset="UTF-8" src="./Django的   在Django Django文档的用户身份验证2222222_files/element_main(1).js"></script></head>
  <body id="documentation" class="default">
  <div id="goog-gt-tt" class="goog-tooltip skiptranslate" style="visibility: hidden; display: none; left: 589px; top: 7894px; "><div style="overflow:hidden"><div class="logo"><img src="./Django的   在Django Django文档的用户身份验证2222222_files/mini_google.png"></div><a class="close-button" href="javascript:void(0)" title="Close"><img src="./Django的   在Django Django文档的用户身份验证2222222_files/cleardot.gif" width="15" height="15" style="background-image:url(https://translate.googleapis.com/translate_static/img/te_ctrl3.gif); background-position:-28px 0px"></a></div><div class="top"><hr style="color: #CCC; background-color: #CCC; height: 1px; border: none;"><div class="title left">Original Text:</div></div><div class="middle"><div class="gt-hl-layer" style="box-sizing: content-box; width: 420px; height: 48px; left: 12px; top: 59px; padding-left: 0px; padding-right: 0px; display: none; " dir=""></div><div class="original-text">If you'd like to manually authenticate a user by comparing a plain-text password to the hashed password in the database, use the convenience function django.contrib.auth.hashers.check_password() .</div></div><div class="bottom"><div class="activity-links" style="display: inline-block; "><span class="activity-link">Show alternative translations</span></div><div class="started-activity-container" style="display: none; "><hr style="color: #CCC; background-color: #CCC; height: 1px; border: none;"><div class="activity-root"></div></div></div><div class="status-message" style="display: none; opacity: 0; "></div></div><div id="container">
    <div id="header">
      <h1 id="logo"><a href="https://www.djangoproject.com/"><img src="./Django的   在Django Django文档的用户身份验证2222222_files/hdr_logo.gif" alt="Django的"></a></h1>
      <ul id="nav-global">
        <li id="nav-homepage"><a href="https://www.djangoproject.com/"><font><font><font><font>家</font></font></font></font></a></li>
        <li id="nav-download"><a href="https://www.djangoproject.com/download/"><font><font><font><font>下载</font></font></font></font></a></li>
        <li id="nav-documentation"><a href="https://docs.djangoproject.com/"><font><font><font><font>文档</font></font></font></font></a></li>
        <li id="nav-weblog"><a href="https://www.djangoproject.com/weblog/"><font><font><font><font>博客</font></font></font></font></a></li>
        <li id="nav-community"><a href="https://www.djangoproject.com/community/"><font><font><font><font>社区</font></font></font></font></a></li>
        <li id="nav-code"><a href="https://code.djangoproject.com/"><font><font><font><font>码</font></font></font></font></a></li>
      </ul>
    </div>
    <!-- END Header -->
    <div id="billboard">
  <h2><a href="https://docs.djangoproject.com/en/1.4/"><font><font><font><font>Django的文档</font></font></font></font></a></h2>
</div>
    <div id="columnwrap">
      
		<div id="content-main">
		


  
  
  <ul id="doc-versions">
      
        
          <li class="other">
            <a href="https://docs.djangoproject.com/en/1.0/topics/auth/"><font><font>1.0</font></font></a></li>
        
      
        
          <li class="other">
            <a href="https://docs.djangoproject.com/en/1.1/topics/auth/"><font><font>1.1</font></font></a></li>
        
      
        
          <li class="other">
            <a href="https://docs.djangoproject.com/en/1.2/topics/auth/"><font><font>1.2</font></font></a></li>
        
      
        
          <li class="other">
            <a href="https://docs.djangoproject.com/en/1.3/topics/auth/"><font><font>1.3</font></font></a></li>
        
      
        
      
        
          <li class="other">
            <a href="https://docs.djangoproject.com/en/dev/topics/auth/"><font><font>开发</font></font></a></li>
        
      
      <li class="current" title="本文档介绍了Django的1.4。 点击左边的链接看到其他版本。">
        <span><font><font><font><font>文件版本：
            </font></font></font></font><strong><font><font><font><font>1.4</font></font></font></font></strong>
        </span>
      </li>
  </ul>
  <div class="section" id="s-module-django.contrib.auth">
<span id="s-user-authentication-in-django"></span><span id="module-django.contrib.auth"></span><span id="user-authentication-in-django"></span><h1><font><font><font><font>在Django的中的用户身份验证</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h1>
<p><font><font>Django自带了一个用户的身份验证系统。</font><font>它可以处理用户帐户，组，权限和基于cookie的用户会话。</font><font>这个文件解释事情是如何工作的。</font></font></p>
<div class="section" id="s-overview">
<span id="overview"></span><h2><font><font><font><font>概述</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#overview" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h2>
<p><font><font><font><font>认证系统包括：</font></font></font></font></p>
<ul class="simple">
<li><font><font><font><font>用户</font></font></font></font></li>
<li><font><font><font><font>权限：二进制（是/否）指定使用者是否可以执行特定任务的标志。</font></font></font></font></li>
<li><font><font><font><font>组：多个使用者应用标签和权限的一个通用的方法。</font></font></font></font></li>
</ul>
</div>
<div class="section" id="s-installation">
<span id="installation"></span><h2><font><font><font><font>安装</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#installation" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h2>
<p><font><font><font><font>捆绑认证支持作为Django的应用程序，
  </font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>django.contrib.auth</font></font></font></font></span></tt><font><font><font><font>。</font></font></font><font><font><font>要安装它，做到以下几点：</font></font></font></font></p>
<ol class="arabic simple">
<li><font><font>把</font></font><tt class="docutils literal"><span class="pre"><font><font>'django.contrib.auth'</font></font></span></tt><font><font>和</font></font><tt class="docutils literal"><span class="pre"><font><font>'django.contrib.contenttypes“</font></font></span></tt><font><font>在你的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-INSTALLED_APPS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>INSTALLED_APPS中</font></font></span></tt></a><font><font>设置。</font><font>（</font></font><tt class="xref py py-class docutils literal"><span class="pre"><font><font>权限</font></font></span></tt><font><font>模型
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth" title="django.contrib.auth：Django的认证框架。"><tt class="xref py py-mod docutils literal"><span class="pre"><font><font>django.contrib.auth</font></font></span></tt></a><font><font>取决于</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/contenttypes/#module-django.contrib.contenttypes" title="django.contrib.contenttypes：安装模式提供通用接口。"><tt class="xref py py-mod docutils literal"><span class="pre"><font><font>django.contrib.contenttypes</font></font></span></tt></a><font><font>。）</font></font></li>
<li><font><font><font><font>运行</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>manage.py</font></font></font></font></span> <span class="pre"><font></font></span></tt><font><font><font><font>命令</font></font></font><tt class="docutils literal"><span class="pre"><font><font><font>的的SyncDB</font></font></font></span></tt><font><font><font>。</font></font></font></font></li>
</ol>
<p><font><font>注意：默认</font></font><tt class="file docutils literal"><span class="pre"><font><font>settings.py</font></font></span></tt><font><font>文件创建
</font><font>方便。</font><font>如果你的</font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-INSTALLED_APPS"><tt class="xref std std-setting docutils literal"><span class="pre"><font>INSTALLED_APPS中</font></span></tt></a><font> 
已经包含了这些应用程序，随时</font><font>再次</font><font>运行</font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font>manage.py </font></span></tt></a><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font>的SyncDB</font></span></tt></a><font>很多次，只要你愿意，每次将只安装需要什么你可以运行该命令。</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-startproject"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font></font></span> <span class="pre"><font></font></span></tt></a><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-INSTALLED_APPS"><tt class="xref std std-setting docutils literal"><span class="pre"><font></font></span></tt></a><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-INSTALLED_APPS"><tt class="xref std std-setting docutils literal"><span class="pre"><font></font></span></tt></a><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font></font></span> <span class="pre"><font></font></span></tt></a><font></font></p>
<p><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font><font>的SyncDB</font></font></span></tt></a><font><font>命令创建必要的数据库表，创建权限对象为所有已安装的应用程序，需要他们，并提示你创建一个超级用户帐户首次运行它。</font></font></p>
<p><font><font><font><font>一旦你采取这些步骤，就是这样。</font></font></font></font></p>
</div>
<div class="section" id="s-users">
<span id="users"></span><h2><font><font><font><font>用户</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#users" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h2>
<dl class="class">
<dt id="django.contrib.auth.models.User">
<em class="property"><font><font><font><font>类</font></font></font></font></em><tt class="descclassname"><font><font><font><font>模型。</font></font></font></font></tt><tt class="descname"><font><font><font><font>用户</font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd></dd></dl>

<div class="section" id="s-api-reference">
<span id="api-reference"></span><h3><font><font><font><font>API的参考</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#api-reference" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h3>
<div class="section" id="s-fields">
<span id="fields"></span><h4><font><font><font><font>领域</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#fields" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<dl class="class">
<dt>
<em class="property"><font><font><font><font>类</font></font></font></font></em><tt class="descclassname"><font><font><font><font>模型。</font></font></font></font></tt><tt class="descname"><font><font><font><font>用户</font></font></font></font></tt></dt>
<dd><p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font><font>用户</font></font></font></font></span></tt></a><font><font><font><font>对象有下列领域：</font></font></font></font></p>
<dl class="attribute">
<dt id="django.contrib.auth.models.User.username">
<tt class="descname"><font><font><font><font>用户名</font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.username" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>必需的</font></font></font><font><font><font>30 </font><font>个字符或更少。</font></font></font><font><font><font>只有字母数字字符（字母，数字和下划线）。</font></font></font></font></p>
<div class="versionchanged">
<span class="title"><font><font><font><font>在Django的1.2改变：</font></font></font></font></span><font><font><font><font>用户名现在可以弱者受制与</font></font></font><font><font><font>，</font></font></font><tt class="docutils literal"><span class="pre"><font><font><font>+</font></font></font></span></tt><font><font><font>，</font></font></font><tt class="docutils literal"><span class="pre"><font><font><font>和</font></font></font></span></tt><tt class="docutils literal"><span class="pre"><font><font><font>-</font></font></font></span></tt><font><font><font>字符。</font></font></font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font></div>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.first_name">
<tt class="descname"><font><font><font><font>FIRST_NAME的</font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.first_name" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>可选的</font></font></font><font><font><font>30 </font><font>个字符或更少。</font></font></font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.last_name">
<tt class="descname"><font><font><font><font>LAST_NAME </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.last_name" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>可选的</font></font></font><font><font><font>30 </font><font>个字符或更少。</font></font></font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.email">
<tt class="descname"><font><font><font><font>电子邮件</font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.email" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>可选的</font></font></font><font><font><font>电子邮件地址。</font></font></font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.password">
<tt class="descname"><font><font><font><font>密码</font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.password" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>必需的。</font><font>哈希，和元数据，密码。</font><font>（Django的不保存原始密码）。原始密码可以任意长，并且可以包含任何字符。</font><font>见“密码”一节。</font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.is_staff">
<tt class="descname"><font><font><font><font>is_staff </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_staff" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>布尔值。</font></font></font><font><font><font>指定使用者是否可以访问管理员发布软件站点。</font></font></font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.is_active">
<tt class="descname"><font><font><font><font>的的is_active </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_active" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>布尔值。</font><font>指定该用户帐户是否应被视为积极的。</font><font>我们建议您将此标志设置为False </font></font><tt class="xref docutils literal"><span class="pre"><font><font>，</font></font></span></tt><font><font>而不是删除帐户，这样，如果你的应用对用户有任何外键，外键不会打破。</font></font></p>
<p><font><font>这并不控制用户是否可以登录验证后端不需要检查为</font></font><tt class="docutils literal"><span class="pre"><font><font>的is_active</font></font></span></tt><font><font> 
标志，所以如果你想拒绝根据登录</font></font><tt class="docutils literal"><span class="pre"><font><font>的is_active</font></font></span></tt><font><font>是
 </font></font><tt class="xref docutils literal"><span class="pre"><font><font>假的</font></font></span></tt><font><font>，这是你检查，在自己登录的看法。</font><font>然而，</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.AuthenticationForm" title="django.contrib.auth.forms.AuthenticationForm"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>AuthenticationForm </font></font></span></tt></a><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.login" title="django.contrib.auth.views.login"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>登录（）</font></font></span></tt></a><font><font> 
所使用的</font><font>观点</font></font><em><font><font>确实</font></font></em><font><font> 
执行此检查，因为这样做权限检查方法，如
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_perm" title="django.contrib.auth.models.User.has_perm"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>has_perm（）</font></font></span></tt></a><font><font>和Django的admin认证。</font><font>所有这些函数/方法将</font></font><tt class="xref docutils literal"><span class="pre"><font><font>返回</font></font></span></tt><font><font> False </font><font>为不活动的用户。</font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.is_superuser">
<tt class="descname"><font><font><font><font>is_superuser </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_superuser" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>布尔值。</font></font></font><font><font><font>指定该使用者没有明确指定的所有权限。</font></font></font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.last_login">
<tt class="descname"><font><font><font><font>last_login </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.last_login" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>一个用户的最后一次登录的日期时间。</font><font>设置默认情况下，为当前的日期/时间。</font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.User.date_joined">
<tt class="descname"><font><font><font><font>date_joined </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.date_joined" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>指定帐户时创建一个DateTime的。</font></font></font><font><font><font>被设定为当前日期/建立帐户时界面风格默认时间。</font></font></font></font></p>
</dd></dl>

</dd></dl>

</div>
<div class="section" id="s-methods">
<span id="methods"></span><h4><font><font><font><font>方法</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#methods" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<dl class="class">
<dt>
<em class="property"><font><font><font><font>类</font></font></font></font></em><tt class="descclassname"><font><font><font><font>模型。</font></font></font></font></tt><tt class="descname"><font><font><font><font>用户</font></font></font></font></tt></dt>
<dd><p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font><font>用户</font></font></font></font></span></tt></a><font><font><font><font>对象有许多到：许多领域：</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>团体</font></font></font></font></span></tt><font><font><font><font>和</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>user_permissions</font></font></font></font></span></tt><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font><font>用户</font></font></font></font></span></tt></a><font><font><font><font>对象可以访问他们在同样的方式与任何其他相关对象</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/db/models/"><em><font><font><font><font>的Django的模型</font></font></font></font></em></a><font><font><font><font>：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">myuser</span><span class="o">.</span><span class="n">groups</span> <span class="o">=</span> <span class="p">[</span><span class="n">group_list</span><span class="p">]</span>
<span class="n">myuser</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">group</span><span class="p">,</span> <span class="n">group</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
<span class="n">myuser</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">group</span><span class="p">,</span> <span class="n">group</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
<span class="n">myuser</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="n">myuser</span><span class="o">.</span><span class="n">user_permissions</span> <span class="o">=</span> <span class="p">[</span><span class="n">permission_list</span><span class="p">]</span>
<span class="n">myuser</span><span class="o">.</span><span class="n">user_permissions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">permission</span><span class="p">,</span> <span class="n">permission</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
<span class="n">myuser</span><span class="o">.</span><span class="n">user_permissions</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">permission</span><span class="p">,</span> <span class="n">permission</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
<span class="n">myuser</span><span class="o">.</span><span class="n">user_permissions</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
</pre></div>
</div>
<p><font><font><font><font>除了 ​​这些自动API的方法，
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font><font>用户</font></font></font></font></span></tt></a><font><font><font><font>对象有以下的自订方法：</font></font></font></font></p>
<dl class="method">
<dt id="django.contrib.auth.models.User.is_anonymous">
<tt class="descname"><font><font><font><font>is_anonymous</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_anonymous" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>总是返回</font></font><tt class="xref docutils literal"><span class="pre"><font><font>FALSE</font></font></span></tt><font><font>。</font><font>这是一种与众不同的方式
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>User</font></font></span></tt></a><font><font>和
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.AnonymousUser" title="django.contrib.auth.models.AnonymousUser"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>AnonymousUser</font></font></span></tt></a><font><font>对象。</font><font>一般来说，你应该更喜欢使用
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_authenticated" title="django.contrib.auth.models.User.is_authenticated"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>is_authenticated（）</font></font></span></tt></a><font><font>这个方法。</font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.is_authenticated">
<tt class="descname"><font><font><font><font>is_authenticated</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_authenticated" title="一篇以这个定义"><font><font><font><font>​​¶</font></font></font></font></a></dt>
<dd><p><font><font>始终返回</font></font><tt class="xref docutils literal"><span class="pre"><font><font>真</font></font></span></tt><font><font>。</font><font>这是一种方式来告诉如果用户已通过验证。</font><font>这并不意味着任何权限，不检查，如果用户是活跃的-它只是表明用户提供了一个有效的用户名和密码。</font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.get_full_name">
<tt class="descname"><font><font><font><font>get_full_name</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_full_name" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>返回的的</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.first_name" title="django.contrib.auth.models.User.first_name"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>FIRST_NAME的</font></font></font></font></span></tt></a><font><font><font><font>加的</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.last_name" title="django.contrib.auth.models.User.last_name"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>LAST_NAME的</font></font></font></font></span></tt></a><font><font><font><font>，相关的例句之间的空间。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.set_password">
<tt class="descname"><font><font><font><font>set_password</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>raw_password</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_password" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>设置用户的密码给定的原始字符串，照顾的密码散列。</font></font></font><font><font><font>不保存
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font><font>用户</font></font></font></font></span></tt></a><font><font><font><font>对象。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.check_password">
<tt class="descname"><font><font><font><font>check_password</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>raw_password</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.check_password" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>返回</font></font><tt class="xref docutils literal"><span class="pre"><font><font>真，</font></font></span></tt><font><font>如果给定的原始字符串是正确的用户密码。</font><font>（这需要在比较照顾的密码散列。）</font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.set_unusable_password">
<tt class="descname"><font><font><font><font>set_unusable_password</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_unusable_password" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>标志着有没有设置密码的用户。</font><font>这是不是有一个空字符串密码相同。
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.check_password" title="django.contrib.auth.models.User.check_password"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>check_password（），</font></font></span></tt></a><font><font>此用户将永远不会</font></font><tt class="xref docutils literal"><span class="pre"><font><font>返回</font></font></span></tt><font><font> True </font><font>。</font><font>不保存
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>对象。</font></font></p>
<p><font><font>您可能需要为您的应用程序的身份验证，如果需要对现有的外部来源，如LDAP目录。</font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.has_usable_password">
<tt class="descname"><font><font><font><font>has_usable_password</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_usable_password" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>此用户已被称为，</font></font></font><font><font><font>如果
  </font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_unusable_password" title="django.contrib.auth.models.User.set_unusable_password"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font><font>set_unusable_password（）</font></font></font></span></tt></a><font><font><font>返回</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>假</font></font></font></font></span></tt><font><font><font><font>。</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_unusable_password" title="django.contrib.auth.models.User.set_unusable_password"><tt class="xref py py-meth docutils literal"><span class="pre"><font></font></span></tt></a><font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.get_group_permissions">
<tt class="descname"><font><font><font><font>get_group_permissions</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>OBJ =没有</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_group_permissions" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>返回该用户具有的权限字符串集合，通过他/她的团体。</font></font></font></font></p>
<div class="versionadded">
<span class="title"><font><font><font><font>在Django的1.2的新功能：</font></font></font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.2/"><em><font><font><font><font>请参阅发行说明</font></font></font></font></em></a></div>
<p><font><font><font><font>如果</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>OBJ</font></font></font></font></span></tt><font><font><font><font>透过在这个特定的对象，只返回该组的权限。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.get_all_permissions">
<tt class="descname"><font><font><font><font>get_all_permissions</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>OBJ =没有</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_all_permissions" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>返回该用户具有的权限字符串集合，无论什么透过组和使用者权限。</font></font></font></font></p>
<div class="versionadded">
<span class="title"><font><font><font><font>在Django的1.2的新功能：</font></font></font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.2/"><em><font><font><font><font>请参阅发行说明</font></font></font></font></em></a></div>
<p><font><font><font><font>如果</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>obj的</font></font></font></font></span></tt><font><font><font><font>是过去了，只返回这个特定对象的权限。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.has_perm">
<tt class="descname"><font><font><font><font>has_perm</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>烫发</font></font></font></font></em><font><font><font><font>，</font></font></font></font><em><font><font><font><font>OBJ =无</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_perm" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><tt class="docutils literal"><span class="pre"><font><font><font>“&lt;应用程序</font></font></font></span></tt><tt class="docutils literal"><span class="pre"><font><font><font>标签</font></font></font></span></tt><font><font><font>，则</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>返回</font></font></font></font></span></tt><font><font><font><font>真，</font></font></font><tt class="docutils literal"><span class="pre"><font><font></font></font></span></tt><tt class="docutils literal"><span class="pre"><font><font></font></font></span></tt><font><font></font></font><font><font></font></font><font><font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#permissions"><font><font></font></font></a><font><font></font></font><font><font></font></font><tt class="xref docutils literal"><span class="pre"><font><font></font></font></span></tt><font><font></font></font><font><font></font></font></font><tt class="docutils literal"><span class="pre"><font></font></span> <span class="pre"><font></font></span> <span class="pre"><font></font></span></tt><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#permissions"><font></font></a><font></font><tt class="xref docutils literal"><span class="pre"><font></font></span></tt><font></font></p>
<div class="versionadded">
<span class="title"><font><font><font><font>在Django的1.2的新功能：</font></font></font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.2/"><em><font><font><font><font>请参阅发行说明</font></font></font></font></em></a></div>
<p><font><font><font><font>如果</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>OBJ</font></font></font></font></span></tt><font><font><font><font>透过这种方法扩展功能不会检查模型的权限，但对于这个特定的对象。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.has_perms">
<tt class="descname"><font><font><font><font>has_perms</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>perm_list</font></font></font></font></em><font><font><font><font>，</font></font></font></font><em><font><font><font><font>OBJ =没有</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_perms" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>，则</font></font><tt class="xref docutils literal"><span class="pre"><font><font>返回</font></font></span></tt><font><font> True </font><font>，如果用户有每个指定的权限，每个烫发的格式是
 </font></font><tt class="docutils literal"><span class="pre"><font><font>“&lt;应用程序</font></font></span> <span class="pre"><font><font>标签。&lt;准许</font></font></span> <span class="pre"><font><font>代号&gt;“ </font></font></span></tt><font><font>。</font><font>如果用户是无效的，此方法将始终</font></font><tt class="xref docutils literal"><span class="pre"><font><font>返回</font></font></span></tt><font><font> False </font><font>。</font></font></p>
<div class="versionadded">
<span class="title"><font><font><font><font>在Django的1.2的新功能：</font></font></font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.2/"><em><font><font><font><font>请参阅发行说明</font></font></font></font></em></a></div>
<p><font><font><font><font>如果</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>OBJ</font></font></font></font></span></tt><font><font><font><font>透过这种方法扩展功能不会检查模型的权限，但对于特定的对象。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.has_module_perms">
<tt class="descname"><font><font><font><font>has_module_perms</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>PACKAGE_NAME</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_module_perms" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>在给定的包（Django的应用程序，标签），如果使用者有任何权限</font></font></font><font><font><font>，则</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>返回</font></font></font></font></span></tt><font><font><font><font>真。</font></font></font><font><font><font>如果使用者什么无效的此方法将始终</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>返回</font></font></font></font></span></tt><font><font><font><font>假</font></font></font><font><font><font>。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.email_user">
<tt class="descname"><font><font><font><font>email_user</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>主题</font></font></font></font></em><font><font><font><font>，</font></font></font></font><em><font><font><font><font>消息</font></font></font></font></em><font><font><font><font>，</font></font></font></font><em><font><font><font><font>from_email =没有</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.email_user" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>向用户发送一封电子邮件。</font></font></font><font><font><font>如果
  </font></font></font></font><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>from_email</font></font></font></font></span></tt><font><font><font><font>是</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>没有</font></font></font></font></span></tt><font><font><font><font> Django的使用</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-DEFAULT_FROM_EMAIL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font><font><font>DEFAULT_FROM_EMAIL</font></font></font></font></span></tt></a><font><font><font><font>。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.User.get_profile">
<tt class="descname"><font><font><font><font>get_profile</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_profile" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>返回该用户的站点特定的配置文件。</font><font>如果当前网站不容许型材，，或
 </font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/exceptions/#django.core.exceptions.ObjectDoesNotExist" title="django.core.exceptions.ObjectDoesNotExist"><tt class="xref py py-exc docutils literal"><span class="pre"><font>django.core.exceptions.ObjectDoesNotExist</font></span></tt></a><font>如果用户配置文件没有</font><font>提出
 </font></font><tt class="xref py py-exc docutils literal"><span class="pre"><font><font>django.contrib.auth.models.SiteProfileNotAvailable</font></font></span></tt><font><font>。</font><font>有关如何定义一个站点特定的用户配置文件的详细信息，请参见上节</font><font>下面的</font><a class="reference external" href="https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users"><font>其他用户信息存储</font></a><font>。</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/exceptions/#django.core.exceptions.ObjectDoesNotExist" title="django.core.exceptions.ObjectDoesNotExist"><tt class="xref py py-exc docutils literal"><span class="pre"><font></font></span></tt></a><font></font><a class="reference external" href="https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users"><font></font></a><font></font></p>
</dd></dl>

</dd></dl>

</div>
<div class="section" id="s-manager-functions">
<span id="manager-functions"></span><h4><font><font><font><font>管理职能</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#manager-functions" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<dl class="class">
<dt id="django.contrib.auth.models.UserManager">
<em class="property"><font><font><font><font>类</font></font></font></font></em><tt class="descclassname"><font><font><font><font>模型。</font></font></font></font></tt><tt class="descname"><font><font><font><font>UserManager </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.UserManager" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font><font>用户</font></font></font><font><font><font>模型有一个自订的管理器，具有以下辅助功能：</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font></font></span></tt></a><font></font></p>
<dl class="method">
<dt id="django.contrib.auth.models.UserManager.create_user">
<tt class="descname"><font><font><font><font>create_user</font></font></font></font></tt><font><font><font><font>（</font></font></font></font><em><font><font><font><font>用户名</font></font></font></font></em><font><font><font><font>，</font></font></font></font><em><font><font><font><font>电子邮件=无</font></font></font></font></em><font><font><font><font>，</font></font></font></font><em><font><font><font><font>密码=无</font></font></font></font></em><font><font><font><font>）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.UserManager.create_user" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><div class="versionchanged">
<span class="title"><font><font><font><font>改变在Django的1.4：</font></font></font></font></span><font></font><tt class="docutils literal"><span class="pre"><font><font>电子邮件</font></font></span></tt><font><font>参数是可选的。</font><font>username参数现在空虚和检查</font><font>结果为负的情况下</font><font>引发
 </font></font><tt class="xref py py-exc docutils literal"><span class="pre"><font><font>ValueError异常</font></font></span></tt><font><font>。</font></font></div>
<p><font><font><font><font>创建，保存并返回</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font><font>用户</font></font></font></font></span></tt></a><font><font><font><font>。</font></font></font></font></p>
<p><font><font>设置为给定</font><font>的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.username" title="django.contrib.auth.models.User.username"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>用户名</font></font></span></tt></a><font><font>和
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.password" title="django.contrib.auth.models.User.password"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>密码</font></font></span></tt></a><font><font>。</font><font>域部分</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.email" title="django.contrib.auth.models.User.email"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>电子邮件</font></font></span></tt></a><font><font>被自动转换为小写，并返回
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>对象将拥有
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_active" title="django.contrib.auth.models.User.is_active"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>的is_active</font></font></span></tt></a><font><font>设置</font></font><tt class="xref docutils literal"><span class="pre"><font><font>为</font></font></span></tt><font><font> True </font><font>。</font></font></p>
<p><font><font><font><font>如果没有提供密码中，
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_unusable_password" title="django.contrib.auth.models.User.set_unusable_password"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font><font><font>set_unusable_password（）</font></font></font></font></span></tt></a><font><font><font><font>将被调用。</font></font></font></font></p>
<p><font><font><font><font>请参阅</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#creating-users"><font><font><font><font>创建用户，</font></font></font></font></a><font><font><font><font>例如使用。</font></font></font></font></p>
</dd></dl>

<dl class="method">
<dt id="django.contrib.auth.models.UserManager.make_random_password">
<tt class="descname">make_random_password</tt>(<em>length=10</em>, <em>allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'</em>)<a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.UserManager.make_random_password" title="一篇以这个定义">¶</a></dt>
<dd><p><font><font>给定的长度和允许的字符的字符串返回一个随机密码。</font><font>（请注意，默认值</font></font><tt class="docutils literal"><span class="pre"><font><font>allowed_chars</font></font></span></tt><font><font> 
不包含字母，可能会导致用户混淆，包括：</font></font></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font><font><font>我</font></font></font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>升</font></font></font></font></span></tt><font><font><font><font>，</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>我</font></font></font></font></span></tt><font><font><font><font>，</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>1</font></font></font></font></span></tt><font><font><font><font>（小写字母，小写字母L时，大写字母我，头号）</font></font></font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font><font><font>O</font></font></font></font></span></tt><font><font><font><font>，</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>O</font></font></font></font></span></tt><font><font><font><font>，</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>0</font></font></font></font></span></tt><font><font><font><font>澳，小写字母Ø和零）</font></font></font></font></li>
</ul>
</dd></dl>

</dd></dl>

</div>
</div>
<div class="section" id="s-basic-usage">
<span id="basic-usage"></span><h3><font><font><font><font>基本用法</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#basic-usage" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h3>
<div class="section" id="s-creating-users">
<span id="s-topics-auth-creating-users"></span><span id="creating-users"></span><span id="topics-auth-creating-users"></span><h4><font><font><font><font>创建用户</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#creating-users" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<p><font><font><font><font>创建用户最基本的方法是使用的
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.UserManager.create_user" title="django.contrib.auth.models.UserManager.create_user"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font><font><font>create_user（）</font></font></font></font></span></tt></a><font><font><font><font>的Django自带的辅助功能：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="kn">import</span> <span class="n">User</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">user</span> <span class="o">=</span> <span class="n">User</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create_user</span><span class="p">(</span><span class="s">'john'</span><span class="p">,</span> <span class="s">'lennon@thebeatles.com'</span><span class="p">,</span> <span class="s">'johnpassword'</span><span class="p">)</span><font></font>
<font></font>
<span class="go"><font><font>＃此时，用户是一个用户对象，已保存</font></font></span>
<span class="go"><font><font>的数据库＃。</font><font>您可以继续以改变其属性</font></font></span>
<span class="go"><font><font>＃如果你想改变等领域。</font></font></span>
<span class="gp"><font><font>&gt;&gt;&gt; </font></font></span><span class="n"><font><font>用户</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>is_staff </font></font></span> <span class="o"><font><font>= </font></font></span> <span class="bp"><font><font>真</font></font></span>
<span class="gp"><font><font>&gt;&gt;&gt; </font></font></span><span class="n"><font><font>用户</font></font></span><span class="o"><font></font></span><span class="n"><font><font><font><font>保存</font></font></font></font></span><span class="p"><font><font><font><font>（）</font></font></font></font></span>
</pre></div>
</div>
<p><font><font>您还可以创建用户使用Django的admin站点。</font><font>假设您已经启用管理网站，并迷上它的URL </font></font><tt class="docutils literal"><span class="pre"><font><font>/管理/</font></font></span></tt><font><font> “添加用户”页面是在
 </font></font><tt class="docutils literal"><span class="pre"><font><font>/管理/认证/用户/添加/</font></font></span></tt><font><font>。</font><font>你也应该看到，以主管理索引页中的“验证”节“用户”链接。</font><font>“添加用户”管理页面是不同的，它要求你选择一个用户名和密码，才让你编辑用户的其他领域比标准管理页面。</font></font></p>
<p><font><font>另外请注意：如果你想自己的用户帐户，以便能够创建用户使用Django的admin站点，你需要给自己添加用户</font></font><em><font><font>，</font></font></em><font><font>更改用户（即“添加用户”和“更改用户”权限的</font><font>权限
 </font><font>）。</font><font>如果您的帐户添加用户，但不改变他们的权限，您将无法添加用户。</font><font>为什么呢？</font><font>因为如果你有添加用户的权限，你有能力创建超级用户，然后可以反过来，改变其他用户。</font><font>因此，Django的需要添加</font></font><em><font><font>和</font></font></em><font><font>更改权限作为一个轻微的保安措施。</font></font></p>
</div>
<div class="section" id="s-changing-passwords">
<span id="changing-passwords"></span><h4><font><font><font><font>更改密码</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#changing-passwords" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<div class="versionadded">
<span class="title"><font><font><font><font>在Django的1.2的新功能：</font></font></font></font></span><font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>manage.py </font></font></font></font></span> <span class="pre"><font><font><font><font>changepassword</font></font></font></font></span></tt><font><font><font><font>命令添加。</font></font></font></font></div>
<p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-changepassword"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font><font>manage.py </font></font></span> <span class="pre"><font><font>changepassword </font></font></span> <span class="pre"><font><font>*用户名*</font></font></span></tt></a><font><font>提供了更改用户密码的命令行的方法。</font><font>它会提示你要改变一个给定的用户，你必须输入两次密码。</font><font>如果他们都在比赛，新密码将立即改变。</font><font>如果你不提供一个用户，该命令将试图改变当前用户的用户名相匹配的密码。</font></font></p>
<p><font><font><font><font>您还可以更改密码编程，使用
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_password" title="django.contrib.auth.models.User.set_password"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font><font><font>set_password（） </font></font></font></font></span></tt></a><font><font><font><font>：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp"><font></font></span><span class="kn"><font></font></span> <span class="nn"><font></font></span> <span class="kn"><font></font></span> <span class="n"><font></font></span>
<span class="gp"><font></font></span><span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span>
<span class="gp"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span><span class="s"><font><font><font><font>密码</font></font></font></font></span><span class="p"><font><font><font><font>' ）</font></font></font></font></span>
<span class="gp"><font><font><font><font>&gt;&gt;&gt; </font></font></font></font></span><span class="n"><font><font><font><font>U </font></font></font></font></span><span class="o"><font><font><font><font>。</font></font></font></font></span><span class="n"><font><font><font><font>保存</font></font></font></font></span><span class="p"><font><font><font><font>（）</font></font></font></font></span>
</pre></div>
</div>
<p><font><font><font><font>不要设置</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.password" title="django.contrib.auth.models.User.password"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>密码</font></font></font></font></span></tt></a><font><font><font><font>属性，除非你知道你在做什么。</font></font></font><font><font><font>在下一节对此进行了解释。</font></font></font></font></p>
</div>
</div>
<div class="section" id="s-how-django-stores-passwords">
<span id="s-auth-password-storage"></span><span id="how-django-stores-passwords"></span><span id="auth-password-storage"></span><h3><font><font><font><font>Django的如何存储密码</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h3>
<div class="versionadded">
<span class="title"><font><font><font><font>在Django的1.4：新</font></font></font></font></span><font><font><font><font>的Django的</font></font></font><font><font></font></font></font></div>
<p><font><font><font><font>的</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.password" title="django.contrib.auth.models.User.password"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>密码</font></font></font></font></span></tt></a><font><font><font><font>属性的
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font><font>用户</font></font></font></font></span></tt></a><font><font><font><font>对象是在这种格式的字符串：</font></font></font></font></p>
<div class="highlight-python"><pre><font><font><font><font>算法美元哈希</font></font></font></font></pre>
</div>
<p><font><font>这是存储算法和哈希，由美元符号隔开。</font><font>该算法是单向散列或密码存储算法的Django可以使用，见下文。</font><font>哈希是单向函数的结果。</font></font></p>
<p><font><font>默认情况下，Django使用的</font></font><a class="reference external" href="http://en.wikipedia.org/wiki/PBKDF2"><font><font>PBKDF2的</font></font></a><font><font>算法与SHA256哈希密码伸展机制建议</font></font><a class="reference external" href="http://csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf"><font><font>NIST的</font></font></a><font><font>。</font><font>这应该是足以满足大多数用户：这是相当安全的，需要大量的计算时间打破。</font></font></p>
<p><font><font><font></font></font><font><font><font>-如果你不知道，你可能不。</font></font></font><font><font><font>如果你这样做，请阅读：</font></font></font></font></p>
<p><font><font>Django的选择算法</font></font><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>PASSWORD_HASHERS</font></font></span></tt><font><font> 
设置</font><font>咨询</font><font>。</font><font>这是一个哈希算法类，这Django安装支持的名单。</font><font>在此列表中的第一项（，
 </font></font><tt class="docutils literal"><span class="pre"><font><font>settings.PASSWORD_HASHERS [0] </font></font></span></tt><font><font>）</font><font>将用于存储密码，和所有其他项目都有效，可用于检查现有密码hashers。</font><font>这意味着，如果你想使用不同的算法，你需要修改
 </font></font><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>PASSWORD_HASHERS</font></font></span></tt><font><font>，你更喜欢的算法首先在列表中列出。</font></font></p>
<p><font><font><font><font>默认</font></font></font></font><tt class="xref std std-setting docutils literal"><span class="pre"><font><font><font><font>PASSWORD_HASHERS</font></font></font></font></span></tt><font><font><font><font>是：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">PASSWORD_HASHERS</span> <span class="o">=</span> <span class="p">(</span>
    <span class="s">'django.contrib.auth.hashers.PBKDF2PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.BCryptPasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.SHA1PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.MD5PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.CryptPasswordHasher'</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<p><font><font>这意味着，Django会使用</font></font><a class="reference external" href="http://en.wikipedia.org/wiki/PBKDF2"><font><font>PBKDF2的</font></font></a><font><font>存储所有密码，但将支持存储的密码PBKDF2SHA1，</font></font><a class="reference external" href="http://en.wikipedia.org/wiki/Bcrypt"><font><font>bcrypt</font></font></a><font><font>，</font></font><a class="reference external" href="http://en.wikipedia.org/wiki/SHA1"><font><font>SHA1</font></font></a><font><font>等</font><font>检查，</font><font>接下来的几节描述了几个常用的方法，先进的用户可能要修改此设置。</font></font></p>
<div class="section" id="s-using-bcrypt-with-django">
<span id="using-bcrypt-with-django"></span><h4><font><font><font><font>使用bcrypt的Django的</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#using-bcrypt-with-django" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<p><a class="reference external" href="http://en.wikipedia.org/wiki/Bcrypt"><font><font>bcrypt</font></font></a><font><font>是一种流行的密码存储算法，这是专门为长期的密码存储设计。</font><font>它不是由Django默认的，因为它需要使用第三方库，但因为很多人可能要使用Django支持bcrypt以最小的努力。</font></font></p>
<p><font><font><font><font>使用界面风格默认的存储算法Bcrypt，做到以下几点：</font></font></font></font></p>
<ol class="arabic">
<li><p class="first"><font><font>安装</font></font><a class="reference external" href="http://pypi.python.org/pypi/py-bcrypt/"><font><font>PY的bcrypt</font></font></a><font><font>库（可能是由运行</font></font><tt class="docutils literal"><span class="pre"><font><font>sudo的</font></font></span> <span class="pre"><font><font>点子</font></font></span> <span class="pre"><font><font>安装</font></font></span>
<span class="pre"><font><font>PY-bcrypt</font></font></span></tt><font><font>，或下载库和安装它</font></font><tt class="docutils literal"><span class="pre"><font><font>的python </font></font></span>
<span class="pre"><font><font>setup.py </font></font></span> <span class="pre"><font><font>安装</font></font></span></tt><font><font>）。</font></font></p>
</li>
<li><p class="first"><font><font>修改</font></font><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>PASSWORD_HASHERS</font></font></span></tt><font><font>列出</font></font><tt class="docutils literal"><span class="pre"><font><font>BCryptPasswordHasher</font></font></span></tt><font><font> 
第一。</font><font>也就是说，在你的设置文件，你把：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">PASSWORD_HASHERS</span> <span class="o">=</span> <span class="p">(</span>
    <span class="s">'django.contrib.auth.hashers.BCryptPasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.PBKDF2PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.SHA1PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.MD5PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.CryptPasswordHasher'</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<p><font><font>（你需要保持在这个名单中的其他条目，否则Django会无法升级密码，见下文）。</font></font></p>
</li>
</ol>
<p><font><font><font><font>这就是它 - 现在你的Django的安装将使用界面风格默认的存储算法Bcrypt。</font></font></font></font></p>
<div class="admonition-other-bcrypt-implementations admonition ">
<p class="first admonition-title"><font><font><font><font>其他bcrypt实现</font></font></font></font></p>
<p class="last"><font><font><font></font></font><font><font></font></font><font><font></font></font></font><cite><font><font><font><font>$（原料bcrypt输出</font></font></font></font></cite><font><font><font><font>） 。</font></font></font><font><font><font>例如：
  </font></font></font></font><cite><font><font><font><font>bcrypt 2A $ $ $ 12 $ NT0I31Sa7ihGEWpka9ASYrEFkhuTNeBQ2xfZskIiiJeyFXhRgS.Sy</font></font></font></font></cite><font><font><font><font>。</font></font></font></font></p>
</div>
</div>
<div class="section" id="s-increasing-the-work-factor">
<span id="increasing-the-work-factor"></span><h4><font><font><font><font>越来越多的工作因素</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#increasing-the-work-factor" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<p><font><font>PDKDF2和bcrypt算法使用迭代散列轮。</font><font>这种刻意减慢攻击，使攻击更难哈希密码。</font><font>然而，随着计算能力的增加，需要增加迭代次数。</font><font>我们选择一个合理的默认（而且会增加它与每个版本的Django），但你不妨调整或下降，取决于您的安全需求和可用的处理能力。</font><font>要做到这一点，你继承合适的算法和覆盖的</font></font><tt class="docutils literal"><span class="pre"><font><font>迭代</font></font></span></tt><font><font> 
参数。</font><font>例如，增加的迭代使用默认PDKDF2算法的数字：</font></font></p>
<ol class="arabic">
<li><p class="first"><font><font><font><font>创建一个子类</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>django.contrib.auth.hashers.PBKDF2PasswordHasher</font></font></font></font></span></tt><font><font><font><font>：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font><font><font>从</font></font></font></font></span> <span class="nn"><font><font><font><font>django.contrib.auth.hashers </font></font></font></font></span> <span class="kn"><font><font><font><font>进口</font></font></font></font></span> <span class="n"><font><font><font><font>PBKDF2PasswordHasher</font></font></font></font></span><font></font>
<font></font>
<span class="k"><font><font>类</font></font></span> <span class="nc"><font><font>MyPBKDF2PasswordHasher </font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>PBKDF2PasswordHasher </font></font></span><span class="p"><font><font>）： </font></font></span>
    <span class="sd"><font><font>“” </font><font>。的PBKDF2PasswordHasher，使用100倍以上的迭代子类 </font></font></span>
<span class="sd"><font></font></span>
<span class="sd"><font><font><font><font>    “ </font></font></font></font></span>
    <span class="n"><font><font><font><font>迭代</font></font></font></font></span> <span class="o"><font><font><font><font>= </font></font></font></font></span> <span class="n"><font><font><font><font>PBKDF2PasswordHasher </font></font></font></font></span><span class="o"><font><font><font><font>，</font></font></font></font></span><span class="n"><font><font><font><font>迭代</font></font></font></font></span> <span class="o"><font><font><font><font>* </font></font></font></font></span> <span class="mi"><font><font><font><font>100</font></font></font></font></span>
</pre></div>
</div>
<p><font><font><font><font>保存此项目中的某处。</font></font></font><font><font><font>例如，你可能把这样的文件，这</font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font><font>为MyProject的/ hashers.py</font></font></font></font></span></tt><font><font><font><font>。</font></font></font></font></p>
</li>
<li><p class="first"><font><font><font><font>在第一项加入新的散列器</font></font></font></font><tt class="xref std std-setting docutils literal"><span class="pre"><font><font><font><font>PASSWORD_HASHERS</font></font></font></font></span></tt><font><font><font><font>：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">PASSWORD_HASHERS</span> <span class="o">=</span> <span class="p">(</span>
    <span class="s">'myproject.hashers.MyPBKDF2PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.PBKDF2PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.BCryptPasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.SHA1PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.MD5PasswordHasher'</span><span class="p">,</span>
    <span class="s">'django.contrib.auth.hashers.CryptPasswordHasher'</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</li>
</ol>
<p><font><font><font><font>这就是它 - 现在你的Django的安装将使用更多的迭代时，它存储密码使用PBKDF2的的。</font></font></font></font></p>
</div>
<div class="section" id="s-password-upgrading">
<span id="password-upgrading"></span><h4><font><font><font><font>密码升级</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#password-upgrading" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h4>
<p><font><font>当用户登录时，如果他们的密码存储任何首选的算法以外，Django会自动升级算法的首选之一。</font><font>这意味着，老安装的Django将自动获得更安全的用户登录，这也意味着，你可以切换到新的和更好的存储算法，因为他们得到发明。</font></font></p>
<p><font><font>然而，Django的只能升级使用中提到的算法</font></font><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>PASSWORD_HASHERS的</font></font></span></tt><font><font>密码
 </font><font>，只要你升级到新的系统，你应该确保从来没有</font><font>从这个名单</font></font><em><font><font>中删除的</font></font></em><font><font>条目。</font><font>如果你这样做，使用非上述算法的用户将无法升级。</font></font></p>
</div>
</div>
<div class="section" id="s-anonymous-users">
<span id="anonymous-users"></span><h3><font><font><font><font>匿名用户</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#anonymous-users" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h3>
<dl class="class">
<dt id="django.contrib.auth.models.AnonymousUser">
<em class="property"><font><font><font><font>类</font></font></font></font></em><tt class="descclassname"><font><font><font><font>模型。</font></font></font></font></tt><tt class="descname"><font><font><font><font>AnonymousUser </font></font></font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.AnonymousUser" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.AnonymousUser" title="django.contrib.auth.models.AnonymousUser"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>django.contrib.auth.models.AnonymousUser</font></font></span></tt></a><font><font>是一类实现的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>django.contrib.auth.models.User</font></font></span></tt></a><font><font>接口，这些差异：</font></font></p>
<ul class="simple">
<li><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>ID</font></font></font></font></span></tt><font><font><font><font>是始终</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>没有</font></font></font></font></span></tt><font><font><font><font>。</font></font></font></font></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_staff" title="django.contrib.auth.models.User.is_staff"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>is_staff</font></font></font></font></span></tt></a><font><font><font><font>和
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_superuser" title="django.contrib.auth.models.User.is_superuser"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>is_superuser</font></font></font></font></span></tt></a><font><font><font><font>始终是
  </font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>假的</font></font></font></font></span></tt><font><font><font><font>。</font></font></font></font></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_active" title="django.contrib.auth.models.User.is_active"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>的的is_active</font></font></font></font></span></tt></a><font><font><font><font>始终是</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>假的</font></font></font></font></span></tt><font><font><font><font>。</font></font></font></font></li>
<li><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>团体</font></font></font></font></span></tt><font><font><font><font>和
  </font></font></font></font><tt class="xref py py-attr docutils literal"><span class="pre"><font><font><font><font>user_permissions</font></font></font></font></span></tt><font><font><font><font>总是空的。</font></font></font></font></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_anonymous" title="django.contrib.auth.models.User.is_anonymous"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font><font><font>is_anonymous（）</font></font></font></font></span></tt></a><font><font><font><font>返回</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>仿。</font></font></font></font></span></tt><font><font><font><font>  
，而不是</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>虚假</font></font></font></font></span></tt><font><font><font><font>的</font></font></font><font><font><font>。</font></font></font></font></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_authenticated" title="django.contrib.auth.models.User.is_authenticated"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font><font><font>is_authenticated（）</font></font></font></font></span></tt></a><font><font><font><font>返回
  </font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>假</font></font></font></font></span></tt><font><font><font><font>，而不是</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>真实的</font></font></font></font></span></tt><font><font><font><font>。</font></font></font></font></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_password" title="django.contrib.auth.models.User.set_password"><tt class="xref py py-meth docutils literal"><span class="pre">set_password()</span></tt></a>,
<a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.check_password" title="django.contrib.auth.models.User.check_password"><tt class="xref py py-meth docutils literal"><span class="pre">check_password()</span></tt></a>,
<tt class="xref py py-meth docutils literal"><span class="pre">save()</span></tt>,
<tt class="xref py py-meth docutils literal"><span class="pre">delete()</span></tt>,
<tt class="xref py py-meth docutils literal"><span class="pre">set_groups()</span></tt> and
<tt class="xref py py-meth docutils literal"><span class="pre">set_permissions()</span></tt> raise
<tt class="xref py py-exc docutils literal"><span class="pre">NotImplementedError</span></tt>.</li>
</ul>
</dd></dl>

<p><font><font>在实践中，你可能将不再需要使用
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.AnonymousUser" title="django.contrib.auth.models.AnonymousUser"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>AnonymousUser</font></font></span></tt></a><font><font>自己的对象，但他们使用Web请求，在下一节解释。</font></font></p>
</div>
<div class="section" id="s-creating-superusers">
<span id="s-topics-auth-creating-superusers"></span><span id="creating-superusers"></span><span id="topics-auth-creating-superusers"></span><h3><font><font><font><font>创建超级用户</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#creating-superusers" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h3>
<p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font><font>manage.py </font></font></span> <span class="pre"><font><font>的SyncDB</font></font></span></tt></a><font><font>提示你创建一个超级用户第一次运行后加入</font></font><tt class="docutils literal"><span class="pre"><font><font>“django.contrib.auth'</font></font></span></tt><font><font>你的
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-INSTALLED_APPS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>INSTALLED_APPS中</font></font></span></tt></a><font><font>。</font><font>如果你需要创建一个超级用户，在以后的日子，你可以使用一个命令行实用程序：</font></font></p>
<div class="highlight-python"><pre><font><font><font><font>manage.py createsuperuser  - 使用者名=乔 - 电子邮件= joe@example.com</font></font></font></font></pre>
</div>
<p><font><font><font></font></font><font><font></font></font><font><font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-option---username"><tt class="xref std std-djadminopt docutils literal"><span class="pre"><font><font><font></font></font></font></span></tt></a><font><font><font><font>电子邮件</font></font></font><font><font><font>选项，它会提示你这些2006/02/15。</font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-option---email"><tt class="xref std std-djadminopt docutils literal"><span class="pre"><font></font></span></tt></a><font></font></p>
<p><font><font><font><font>如果你使用的是旧版本的Django中，在命令行上建立的超级老办法仍然有效值：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n"><font><font><font><font>蟒蛇</font></font></font></font></span> <span class="o"><font><font><font><font>/ </font></font></font></font></span><span class="n"><font><font><font><font>路径</font></font></font></font></span><span class="o"><font><font><font><font>/ </font></font></font></font></span><span class="n"><font><font><font><font>到</font></font></font></font></span><span class="o"><font><font><font><font>/ </font></font></font></font></span><span class="n"><font><font><font><font>的的django </font></font></font></font></span><span class="o"><font><font><font><font>/ </font></font></font></font></span><span class="n"><font><font><font><font>contrib的的</font></font></font></font></span><span class="o"><font><font><font><font>/ </font></font></font></font></span><span class="n"><font><font><font><font>AUTH </font></font></font></font></span><span class="o"><font><font><font><font>/ </font></font></font></font></span><span class="n"><font><font><font><font>create_superuser的的</font></font></font></font></span><span class="o"><font><font><font><font>。</font></font></font></font></span><span class="n"><font><font><font></font></font></font></span>
</pre></div>
</div>
<p><font><font>... </font></font><tt class="file docutils literal"><span class="pre"><font><font>/路径/</font></font></span></tt><font><font> Django的文件系统代码库的路径。</font><font>的的</font></font><tt class="docutils literal"><span class="pre"><font><font>manage.py</font></font></span></tt><font><font>命令是首选，因为它计算出正确的路径和你的环境。</font></font></p>
</div>
<div class="section" id="s-storing-additional-information-about-users">
<span id="s-auth-profiles"></span><span id="storing-additional-information-about-users"></span><span id="auth-profiles"></span><h3><font><font><font><font>存储有关用户的其他信息</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h3>
<p><font><font><font><font> - 被称为“用户配置文件” - 为这个的目的。</font></font></font></font></p>
<p><font><font>要利用这一特性，定义的其他信息，你想存储的领域，或其他方法，你想获得一个模型，并添加一个
 </font><font>名为</font></font><tt class="xref py py-class docutils literal"><span class="pre"><font><font>OneToOneField </font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt><font><font>从你的模型的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>模型。</font><font>这将确保你的模型中只有一个实例，可以为每个</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>创建
 </font><font>。</font><font>例如：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font><font><font>从</font></font></font></font></span> <span class="nn"><font><font><font><font>django.contrib.auth.models </font></font></font></font></span> <span class="kn"><font><font><font><font>导入</font></font></font></font></span> <span class="n"><font><font><font><font>用户</font></font></font></font></span><font></font>
<font></font>
<span class="k"><font><font><font><font>类的</font></font></font></font></span> <span class="nc"><font><font><font><font>下USERPROFILE </font></font></font></font></span><span class="p"><font><font><font><font>（</font></font></font></font></span><span class="n"><font><font><font><font>模型</font></font></font></font></span><span class="o"><font><font><font><font>。</font></font></font></font></span><span class="n"><font></font></span><span class="p"><font><font><font><font>：</font></font></font></font></span>
    <span class="c"><font><font><font><font>＃此字段是必需的</font></font></font></font></span>
    <span class="n"><font><font><font><font>用户</font></font></font></font></span> <span class="o"><font></font></span> <span class="n"><font><font><font><font>模型</font></font></font></font></span><span class="o"><font><font><font><font>。</font></font></font></font></span><span class="n"><font><font><font><font>OneToOneField </font></font></font></font></span><span class="p"><font><font><font><font>（</font></font></font></font></span><span class="n"><font><font><font><font>用户</font></font></font></font></span><span class="p"><font><font><font><font>）</font></font></font></font></span><font></font>
<font></font>
    <span class="c"><font><font><font><font>＃其他领域</font></font></font></font></span>
    <span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
    <span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="mi"><font></font></span><span class="p"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span>
</pre></div>
</div>
<p><font><font>为了表明，该模型是一个给定网站的用户剖面模型，填补在设置</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-AUTH_PROFILE_MODULE"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>AUTH_PROFILE_MODULE</font></font></span></tt></a><font><font>包括以下项目，由点号分隔的字符串：</font></font></p>
<ol class="arabic simple">
<li><font><font>应用程序的名称（区分大小写），在用户配置文件定义模型（换句话说，被传递到的名称</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-startapp"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font><font>manage.py </font></font></span> <span class="pre"><font><font>的startApp</font></font></span></tt></a><font><font>创建应用程序）。</font></font></li>
<li><font><font><font><font>该模型的名称（不区分大小写）类。</font></font></font></font></li>
</ol>
<p><font><font>例如，如果剖面模型是一类名为</font></font><tt class="docutils literal"><span class="pre"><font><font>USERPROFILE</font></font></span></tt><font><font>和定义的应用程序名为内的</font></font><tt class="docutils literal"><span class="pre"><font><font>帐户</font></font></span></tt><font><font>，相应的设置将是：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n"><font><font><font><font>AUTH_PROFILE_MODULE </font></font></font></font></span> <span class="o"><font><font><font><font>的</font></font></font></font></span> <span class="s"><font><font><font><font>“accounts.UserProfile”</font></font></font></font></span>
</pre></div>
</div>
<p><font><font>当用户剖面模型已被定义，并以这种方式指定，每个
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>对象将有一个方法-
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_profile" title="django.contrib.auth.models.User.get_profile"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>get_profile（）</font></font></span></tt></a><font><font> -返回与此有关的用户个人资料模型的实例
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>。</font></font></p>
<p><font><font>的方法</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_profile" title="django.contrib.auth.models.User.get_profile"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>get_profile（）</font></font></span></tt></a><font><font> 
不创建一个配置文件，如果不存在。</font><font>您需要注册一个用户模式的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/signals/#django.db.models.signals.post_save" title="django.db.models.signals.post_save"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>django.db.models.signals.post_save</font></font></span></tt></a><font><font>信号的</font><font>处理程序</font><font>，并在处理程序中，如果</font></font><tt class="docutils literal"><span class="pre"><font><font>创建的</font></font></span></tt><font><font>是</font></font><tt class="xref docutils literal"><span class="pre"><font><font>真实的</font></font></span></tt><font><font>，建立相关的用户配置文件：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"><font><font><font><font>＃在models.py</font></font></font></font></span><font></font>
<font></font>
<span class="kn"><font><font><font><font>从的</font></font></font></font></span> <span class="nn"><font><font><font><font>django.contrib.auth.models </font></font></font></font></span> <span class="kn"><font><font><font><font>进口</font></font></font></font></span> <span class="n"><font><font><font><font>用户</font></font></font></font></span>
<span class="kn"><font><font><font><font>从</font></font></font></font></span> <span class="nn"><font><font><font><font>django.db.models.signals </font></font></font></font></span> <span class="kn"><font><font><font><font>进口</font></font></font></font></span> <span class="n"><font><font><font><font>post_save</font></font></font></font></span><font></font>
<font></font>
<span class="c"><font><font><font><font>下USERPROFILE从上面的</font></font></font><font><font><font>＃的订</font></font></font></font></span>
<span class="c"><font><font><font><font>...</font></font></font></font></span><font></font>
<font></font>
<span class="k">def</span> <span class="nf">create_user_profile</span><span class="p">(</span><span class="n">sender</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">created</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
    <span class="k">if</span> <span class="n">created</span><span class="p">:</span>
        <span class="n">UserProfile</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">instance</span><span class="p">)</span><font></font>
<font></font>
<span class="n"><font><font><font><font>post_save </font></font></font></font></span><span class="o"><font><font><font><font>。</font></font></font></font></span><span class="n"><font><font><font><font>连接</font></font></font></font></span><span class="p"><font><font><font><font>（</font></font></font></font></span><span class="n"><font><font><font><font>create_user_profile </font></font></font></font></span><span class="p"><font><font><font><font>，</font></font></font></font></span> <span class="n"><font><font><font><font>发件人</font></font></font></font></span><span class="o"><font><font><font><font>= </font></font></font></font></span><span class="n"><font><font><font><font>用户</font></font></font></font></span><span class="p"><font><font><font><font>）</font></font></font></font></span>
</pre></div>
</div>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title"><font><font><font><font>参见</font></font></font></font></p>
<p class="last"><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/signals/"><em><font></font></em></a><font><font><font><font>Django的的信号调度的更多信息的</font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/signals/"><em><font><font><font>信号</font></font></font></em></a><font><font><font>。</font></font></font></font></p>
</div>
</div>
</div>
<div class="section" id="s-authentication-in-web-requests">
<span id="authentication-in-web-requests"></span><h2><font><font><font><font>网页请求的验证</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authentication-in-web-requests" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h2>
<p><font><font>到现在为止，这份文件已处理的低级别的API操纵认证相关的对象。</font><font>Django的更高的层次上，可以此认证框架挂接到它的系统
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="django.http.HttpRequest的"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>请求</font></font></span> <span class="pre"><font><font>对象</font></font></span></tt></a><font><font>。</font></font></p>
<p><font><font>首先，</font><font>
通过将它们添加到您的</font><font>安装的
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware" title="django.contrib.sessions.middleware.SessionMiddleware"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>SessionMiddleware</font></font></span></tt></a><font><font>和
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware" title="django.contrib.auth.middleware.AuthenticationMiddleware"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>AuthenticationMiddleware</font></font></span></tt></a><font><font>中间件</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-MIDDLEWARE_CLASSES"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>的MIDDLEWARE_CLASSES</font></font></span></tt></a><font><font>设置。</font><font>见</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/http/sessions/"><em><font><font>会议文件</font></font></em></a><font><font>的更多信息。</font></font></p>
<p><font><font>一旦你有安装那些中间件，你就可以访问
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.user" title="django.http.HttpRequest.user"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>request.user</font></font></span></tt></a><font><font>的意见。
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.user" title="django.http.HttpRequest.user"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>request.user</font></font></span></tt></a><font><font>会给你一个
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>对象，表示当前登录的用户。</font><font>如果用户目前没有登录，
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.user" title="django.http.HttpRequest.user"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>request.user</font></font></span></tt></a><font><font>将被设置为一个的实例</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.AnonymousUser" title="django.contrib.auth.models.AnonymousUser"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>AnonymousUser</font></font></span></tt></a><font><font>（参见上一节）。</font><font>你可以告诉他们除了
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_authenticated" title="django.contrib.auth.models.User.is_authenticated"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>is_authenticated（） </font></font></span></tt></a><font><font>，</font><font>像这样：</font></font></p>
<div class="highlight-python"><pre><font><font><font><font>如果request.user.is_authenticated（）：</font></font></font></font><font></font><font><font><font><font>
    ＃身份验证的使用者做的东西。</font></font></font></font><font></font><font><font><font><font>
其他：</font></font></font></font><font></font><font><font><font><font>
    ＃匿名用户的东西。</font></font></font></font></pre>
</div>
<div class="section" id="s-how-to-log-a-user-in">
<span id="s-id1"></span><span id="how-to-log-a-user-in"></span><span id="id1"></span><h3><font><font><font><font>如何登录用户在</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-to-log-a-user-in" title="固定链接到这个标题"><font><font><font><font>¶</font></font></font></font></a></h3>
<p><font><font><font><font>Django的提供了两个功能</font></font></font><font><font><font>：
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth" title="django.contrib.auth：Django的认证框架。"><tt class="xref py py-mod docutils literal"><span class="pre"><font><font><font><font>django.contrib.auth</font></font></font></font></span></tt></a><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.authenticate" title="django.contrib.auth.authenticate"><tt class="xref py py-func docutils literal"><span class="pre"><font><font><font><font>验证（）</font></font></font></font></span></tt></a><font><font><font><font>和
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.login" title="django.contrib.auth.login"><tt class="xref py py-func docutils literal"><span class="pre"><font><font><font><font>登录（）</font></font></font></font></span></tt></a><font><font><font><font>。</font></font></font></font></p>
<dl class="function">
<dt id="django.contrib.auth.authenticate">
<tt class="descname"><font><font><font><font>验证</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.authenticate" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font><font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.authenticate" title="django.contrib.auth.authenticate"><tt class="xref py py-func docutils literal"><span class="pre"><font><font><font></font></font></font></span></tt></a><font><font><font></font></font><font><font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font></font></font></font></span></tt><font><font><font></font></font></font><tt class="docutils literal"><span class="pre"><font><font><font></font></font></font></span></tt><font><font><font></font></font><font><font></font></font><font><font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font><font></font></font></font></span></tt></a><font><font><font><font>对象。</font></font></font><font><font><font>如果密码什么无效的
  </font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.authenticate" title="django.contrib.auth.authenticate"><tt class="xref py py-func docutils literal"><span class="pre"><font><font><font><font>验证（）</font></font></font></font></span></tt></a><font><font><font><font>返回</font></font></font></font><tt class="xref docutils literal"><span class="pre"><font><font><font><font>没有</font></font></font></font></span></tt><font><font><font><font>。</font></font></font><font><font><font>例如：</font></font></font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font></font></span> <span class="nn"><font></font></span> <span class="kn"><font></font></span> <span class="n"><font></font></span>
<span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span>
<span class="k"><font></font></span> <span class="n"><font></font></span> <span class="ow"><font></font></span> <span class="ow"><font></font></span> <span class="bp"><font></font></span><span class="p"><font></font></span>
    <span class="k"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
        <span class="k"><font></font></span> <span class="s"><font><font>提供了正确的用户名和密码！“ </font></font></span>
    <span class="k"><font><font>其他</font></font></span><span class="p"><font><font>：</font></font></span>
        <span class="k"><font><font>打印</font></font></span> <span class="s"><font><font>“您的帐户已禁用”！</font></font></span>
<span class="k"><font><font>其他</font></font></span><span class="p"><font><font>：</font></font></span>
    <span class="k"><font><font>打印</font></font></span> <span class="s"><font><font>“您的用户名和密码是不正确的”。</font></font></span>
</pre></div>
</div>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.login">
<tt class="descname"><font><font><font><font>登录</font></font></font></font></tt><font><font><font><font>（）</font></font></font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.login" title="一篇以这个定义"><font><font><font><font>¶</font></font></font></font></a></dt>
<dd><p><font><font>登录用户在视图中，使用</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.login" title="django.contrib.auth.login"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>登录（） </font></font></span></tt></a><font><font>。</font><font>它需要</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="django.http.HttpRequest的"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>一个</font></font></span></tt></a><font><font> HttpRequest </font><font>对象和
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>对象。
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.login" title="django.contrib.auth.login"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>登录（）</font></font></span></tt></a><font><font>节省了用户的会话ID，使用Django的session框架，因此，如上所述，您需要确保安装会话中间件。</font></font></p>
<p><font><font><font><font>请注意，当使用者登录匿名会议期间的数据将被暂缓</font></font></font></font></p>
<p><font><font><font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.authenticate" title="django.contrib.auth.authenticate"><tt class="xref py py-func docutils literal"><span class="pre"><font><font><font></font></font></font></span></tt></a><font><font><font></font></font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#djaIf you'd like to manually authenticate a user by comparing a plain-textpassword to the hashed password in the database, use the conveniencefunction <a class=" reference="" internal"="" title="django.contrib.auth.hashers.check_password"><tt class="xref py py-func docutils literal"><span class="pre"><font><font class=""><font></font></font></font><font></font></span></tt></a><font><font class=""><font></font></font></font><font><font>它有两个参数：纯文本密码进行检查，和用户的全部价值</font></font><tt class="docutils literal"><span class="pre"><font></font><font><font>密码</font></font></span></tt><font></font><font><font> 字段在数据库核对，并返回
</font></font><tt class="xref docutils literal"><span class="pre"><font></font><font><font>真</font></font></span></tt><font></font><font><font> 如果它们匹配， </font></font><tt class="xref docutils literal"><span class="pre"><font></font><font><font>假</font></font></span></tt><font></font><font><font> 否则。</font></font></p>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.hashers.make_password">
<tt class="descname"><font><font>make_password</font></font></tt><font><font>（）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.hashers.make_password" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><div class="versionadded">
<span class="title"><font><font>在Django 1.4的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.4/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font><font>在此应用程序所使用的格式创建一个哈希密码。</font><font>它有两个参数：使用哈希算法和纯文本的密码。</font><font>目前支持的算法是：</font></font><tt class="docutils literal"><span class="pre"><font><font>“SHA1” </font></font></span></tt><font><font>，</font></font><tt class="docutils literal"><span class="pre"><font><font>“MD5”</font></font></span></tt><font><font>和</font></font><tt class="docutils literal"><span class="pre"><font><font>“地穴”</font></font></span></tt><font><font> 
如果你有</font><font>安装</font><font>隐窝</font><font>库。</font><font>如果第二个参数是
 </font><tt class="xref docutils literal"><span class="pre"><font>没有的</font></span></tt><font>，无法使用的密码（一个将永远接受</font><a class="reference internal" href="file:///C:/Documents%20and%20Settings/duoyi/%E6%A1%8C%E9%9D%A2/Django%20%20%20User%20authentication%20in%20Django%20%20%20Django%20documentation_files/Django%20%20%20User%20authentication%20in%20Django%20%20%20Django%20documentation.htm" title="django.contrib.auth.hashers.check_password"><tt class="xref py py-func docutils literal"><span class="pre"><font>django.contrib.auth.hashers.check_password（） </font></span></tt></a><font>）</font><font>返回</font><font>。</font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="xref docutils literal"><span class="pre"><font></font></span></tt><font></font><a class="reference internal" href="file:///C:/Documents%20and%20Settings/duoyi/%E6%A1%8C%E9%9D%A2/Django%20%20%20User%20authentication%20in%20Django%20%20%20Django%20documentation_files/Django%20%20%20User%20authentication%20in%20Django%20%20%20Django%20documentation.htm" title="django.contrib.auth.hashers.check_password"><tt class="xref py py-func docutils literal"><span class="pre"><font></font></span></tt></a><font></font></p>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.hashers.is_password_usable">
<tt class="descname"><font><font>is_password_usable</font></font></tt><font><font>（）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.hashers.is_password_usable" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><div class="versionadded">
<span class="title"><font><font>在Django 1.4的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.4/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font><font>检查给定的字符串，如果是一个哈希密码，有一个正在对核实的的机会</font></font><a class="reference internal" href="file:///C:/Documents%20and%20Settings/duoyi/%E6%A1%8C%E9%9D%A2/Django%20%20%20User%20authentication%20in%20Django%20%20%20Django%20documentation_files/Django%20%20%20User%20authentication%20in%20Django%20%20%20Django%20documentation.htm" title="django.contrib.auth.hashers.check_password"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>django.contrib.auth.hashers.check_password（） </font></font></span></tt></a><font><font>。</font></font></p>
</dd></dl>

</div>
<div class="section" id="s-how-to-log-a-user-out">
<span id="how-to-log-a-user-out"></span><h3><font><font>如何记录用户</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-to-log-a-user-out" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<dl class="function">
<dt id="django.contrib.auth.logout">
<tt class="descname"><font><font>注销</font></font></tt><font><font>（）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.logout" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>要注销一名已通过记录的的用户
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.login" title="django.contrib.auth.login"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>django.contrib.auth.login（） </font></font></span></tt></a><font><font>，</font><font>使用
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.logout" title="django.contrib.auth.logout"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>django.contrib.auth.logout（）</font></font></span></tt></a><font><font>在你的看法。</font><font>它需要</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="django.http.HttpRequest的"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>一个</font></font></span></tt></a><font><font> HttpRequest
 </font><font>对象，并没有返回值。</font><font>例如：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>从</font></font></span> <span class="nn"><font><font>django.contrib.auth </font></font></span> <span class="kn"><font><font>进口</font></font></span> <span class="n"><font><font>注销</font></font></span><font></font>
<font></font>
<span class="k"><font><font>，DEF </font></font></span> <span class="nf"><font><font>logout_view </font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="n"><font><font>注销</font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）</font></font></span>
    <span class="c"><font><font>＃重定向到成功页面。</font></font></span>
</pre></div>
</div>
<p><font><font>请注意，</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.logout" title="django.contrib.auth.logout"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>注销（）</font></font></span></tt></a><font><font>不抛出任何错误，如果用户没有登录。</font></font></p>
<p><font><font>当你调用</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.logout" title="django.contrib.auth.logout"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>退出（） </font></font></span></tt></a><font><font>，</font><font>为当前请求的会话数据被完全清除。</font><font>现有的所有数据将被删除。</font><font>这是为了防止他人使用相同的Web浏览器登录并访问用户的会话数据。</font><font>如果你想的会议，这将是提供给用户登出后，立即投入什么，这样做</font></font><em><font><font>后</font></font></em><font><font>调用
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.logout" title="django.contrib.auth.logout"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>django.contrib.auth.logout（） </font></font></span></tt></a><font><font>。</font></font></p>
</dd></dl>

</div>
<div class="section" id="s-login-and-logout-signals">
<span id="s-topics-auth-signals"></span><span id="login-and-logout-signals"></span><span id="topics-auth-signals"></span><h3><font><font>登录和注销的信号</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#login-and-logout-signals" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<div class="versionadded">
<span class="title"><font><font>在Django 1.3的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.3/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font><font>auth框架使用两个</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/signals/"><em><font><font>信号</font></font></em></a><font><font>，可用于通知用户登录或退出时使用。</font></font></p>
<dl class="data">
<dt id="django.contrib.auth.django.contrib.auth.signals.user_logged_in">
<tt class="descclassname"><font><font>django.contrib.auth.signals。</font></font></tt><tt class="descname"><font><font>user_logged_in </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.django.contrib.auth.signals.user_logged_in" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd></dd></dl>

<p><font><font>用户成功登录时发送。</font></font></p>
<p><font><font>与此信号发送的参数：</font></font></p>
<dl class="docutils">
<dt><tt class="docutils literal"><span class="pre"><font><font>寄件人</font></font></span></tt></dt>
<dd><font><font>如上所述：刚刚登录的用户类</font></font></dd>
<dt><tt class="docutils literal"><span class="pre"><font><font>要求</font></font></span></tt></dt>
<dd><font><font>当前</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="django.http.HttpRequest的"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>的HttpRequest</font></font></span></tt></a><font><font>实例。</font></font></dd>
<dt><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></dt>
<dd><font><font>刚刚登录的用户实例</font></font></dd>
</dl>
<dl class="data">
<dt id="django.contrib.auth.django.contrib.auth.signals.user_logged_out">
<tt class="descclassname"><font><font>django.contrib.auth.signals。</font></font></tt><tt class="descname"><font><font>user_logged_out </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.django.contrib.auth.signals.user_logged_out" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd></dd></dl>

<p><font><font>logout方法被调用时发送。</font></font></p>
<dl class="docutils">
<dt><tt class="docutils literal"><span class="pre"><font><font>寄件人</font></font></span></tt></dt>
<dd><font><font>如上：</font><font>
如果用户没有经过认证</font><font>的用户，只是注销或类</font></font><tt class="xref docutils literal"><span class="pre"><font><font>没有</font></font></span></tt><font><font>。</font></font></dd>
<dt><tt class="docutils literal"><span class="pre"><font><font>要求</font></font></span></tt></dt>
<dd><font><font>当前</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="django.http.HttpRequest的"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>的HttpRequest</font></font></span></tt></a><font><font>实例。</font></font></dd>
<dt><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></dt>
<dd><font><font>用户实例，刚刚退出或</font></font><tt class="xref docutils literal"><span class="pre"><font><font>没有</font></font></span></tt><font><font>，如果没有经过认证的用户。</font></font></dd>
</dl>
</div>
<div class="section" id="s-limiting-access-to-logged-in-users">
<span id="limiting-access-to-logged-in-users"></span><h3><font><font>限制登录用户的访问</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-users" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<div class="section" id="s-the-raw-way">
<span id="the-raw-way"></span><h4><font><font>原始的方式</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#the-raw-way" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<p><font><font>简单，原始的方式来限制访问的网页是检查
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.is_authenticated" title="django.contrib.auth.models.User.is_authenticated"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>request.user.is_authenticated（）</font></font></span></tt></a><font><font>重定向到登录页面：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>从</font></font></span> <span class="nn"><font><font>django.http </font></font></span> <span class="kn"><font><font>进口</font></font></span> <span class="n"><font><font>HttpResponseRedirect</font></font></span><font></font>
<font></font>
<span class="k"><font></font></span> <span class="nf"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
    <span class="k"><font></font></span> <span class="ow"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
        <span class="k"><font></font></span> <span class="n"><font></font></span><span class="p"><font></font></span><span class="s"><font></font></span><span class="si"><font></font></span><span class="s"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
    <span class="c"><font><font>...</font></font></span>
</pre></div>
</div>
<p><font><font>或显示错误消息：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="k"><font></font></span> <span class="nf"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
    <span class="k"><font></font></span> <span class="ow"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
        <span class="k"><font></font></span> <span class="n"><font></font></span><span class="p"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span>
    <span class="c"><font><font>...</font></font></span>
</pre></div>
</div>
</div>
<div class="section" id="s-the-login-required-decorator">
<span id="the-login-required-decorator"></span><h4><font><font>login_required装饰</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#the-login-required-decorator" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<dl class="function">
<dt id="django.contrib.auth.decorators.login_required">
<tt class="descclassname"><font><font>装饰。</font></font></tt><tt class="descname"><font><font>login_required</font></font></tt><font><font>（</font></font><span class="optional"><font><font>[ </font></font></span><em><font><font>redirect_field_name = REDIRECT_FIELD_NAME</font></font></em><font><font>，</font></font><em><font><font>LOGIN_URL =无</font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.login_required" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>作为一种快捷 ​​方式，您可以使用便利的
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.login_required" title="django.contrib.auth.decorators.login_required"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>login_required（）</font></font></span></tt></a><font><font>装饰：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>，从</font></font></span> <span class="nn"><font><font>django.contrib.auth.decorators </font></font></span> <span class="kn"><font><font>导入</font></font></span> <span class="n"><font><font>login_required</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ login_required </font></font></span>
<span class="k"><font><font>DEF </font></font></span> <span class="nf"><font><font>my_view </font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="o"><font><font>...</font></font></span>
</pre></div>
</div>
<p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.login_required" title="django.contrib.auth.decorators.login_required"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>的login_required（）</font></font></span></tt></a><font><font>执行以下操作：</font></font></p>
<ul class="simple">
<li><font><font>如果用户没有登录，重定向到
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>settings.LOGIN_URL</font></font></span></tt></a><font><font>，在查询字符串中传递当前的绝对路径。</font><font>例如：</font></font><tt class="docutils literal"><span class="pre"><font><font>/帐户/登录/下/调查/ 3 /</font></font></span></tt><font><font>。</font></font></li>
<li><font><font>如果用户已登录，执行正常的观点。</font><font>视图代码是免费的假定用户正在登录</font></font></li>
</ul>
<p><font><font>默认情况下，应重新验证成功后，用户的路径存储在一个查询字符串参数称为
 </font></font><tt class="docutils literal"><span class="pre"><font><font>“下一步”</font></font></span></tt><font><font>。</font><font>如果您愿意使用此参数，一个不同的名称的
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.login_required" title="django.contrib.auth.decorators.login_required"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>login_required（）</font></font></span></tt></a><font><font>可选</font></font><tt class="docutils literal"><span class="pre"><font><font>redirect_field_name</font></font></span></tt><font><font>参数：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>，从</font></font></span> <span class="nn"><font><font>django.contrib.auth.decorators </font></font></span> <span class="kn"><font><font>导入</font></font></span> <span class="n"><font><font>login_required</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ login_required </font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>redirect_field_name </font></font></span><span class="o"><font><font>= </font></font></span><span class="s"><font><font>'my_redirect_field </font></font></span><span class="p"><font><font>）</font></font></span>
<span class="k"><font><font>DEF </font></font></span> <span class="nf"><font><font>my_view </font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="o"><font><font>...</font></font></span>
</pre></div>
</div>
<p><font><font>请注意，如果你提供了一个到</font></font><tt class="docutils literal"><span class="pre"><font><font>redirect_field_name的</font></font></span></tt><font><font>价值</font><font>，你将最有可能需要自定义，以及您的登录模板，因为模板的上下文变量存储重定向路径将使用的价值，
 </font></font><tt class="docutils literal"><span class="pre"><font><font>redirect_field_name</font></font></span></tt><font><font>作为其关键，而不是</font></font><tt class="docutils literal"><span class="pre"><font><font>“未来”</font></font></span></tt><font><font>（默认）。</font></font></p>
<div class="versionadded">
<span class="title"><font><font>在Django 1.3的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.3/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.login_required" title="django.contrib.auth.decorators.login_required"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>的login_required（）</font></font></span></tt></a><font><font>也需要可选</font></font><tt class="docutils literal"><span class="pre"><font><font>LOGIN_URL</font></font></span></tt><font><font>参数。</font><font>例如：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>，从</font></font></span> <span class="nn"><font><font>django.contrib.auth.decorators </font></font></span> <span class="kn"><font><font>导入</font></font></span> <span class="n"><font><font>login_required</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ login_required </font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>LOGIN_URL </font></font></span><span class="o"><font><font>= </font></font></span><span class="s"><font><font>'/帐户/登录/' </font></font></span><span class="p"><font><font>）</font></font></span>
<span class="k"><font><font>DEF </font></font></span> <span class="nf"><font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="o"><font><font>......</font></font></span>
</pre></div>
</div>
<p><font><font>请注意，如果你不指定的</font></font><tt class="docutils literal"><span class="pre"><font><font>LOGIN_URL的</font></font></span></tt><font><font>参数，你需要适当的Django视图映射到</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>settings.LOGIN_URL</font></font></span></tt></a><font><font>。</font><font>例如，使用默认值，添加下面一行到你的URLconf：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="p"><font><font>（</font></font></span><span class="s"><font><font>R'^帐户/登录/ $' </font></font></span><span class="p"><font><font>，</font></font></span> <span class="s"><font><font>'django.contrib.auth.views.login“ </font></font></span><span class="p"><font><font>），</font></font></span>
</pre></div>
</div>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.login">
<tt class="descclassname"><font><font>意见。</font></font></tt><tt class="descname"><font><font>登录</font></font></tt><font><font>（</font></font><em><font><font>请求</font></font></em><span class="optional"><font><font>[</font></font></span><font><font>，</font></font><em><font><font>TEMPLATE_NAME</font></font></em><font><font>，</font></font><em><font><font>redirect_field_name</font></font></em><font><font>，</font></font><em><font><font>authentication_form </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.login" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><strong><font><font>网址名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>登录</font></font></span></tt></p>
<p><font><font>见</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/http/urls/"><em><font><font>的URL文件，</font></font></em></a><font><font>使用命名的URL模式的详细信息。</font></font></p>
<p><font><font>这里什么</font></font><tt class="docutils literal"><span class="pre"><font><font>django.contrib.auth.views.login</font></font></span></tt><font><font>：</font></font></p>
<ul class="simple">
<li><font><font>如果通过调用</font></font><tt class="docutils literal"><span class="pre"><font><font>GET</font></font></span></tt><font><font>，它显示一个登录表单，同一网址的职位。</font><font>此位。</font></font></li>
<li><font><font>如果通过调用</font></font><tt class="docutils literal"><span class="pre"><font><font>发表</font></font></span></tt><font><font>，它试图登录的用户登录，如果登录成功，视图在指定的URL重定向到</font><font>。</font><font>如果
 </font><font>不提供</font><tt class="docutils literal"><span class="pre"><font>下</font></span></tt><font>，它重定向到
 </font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_REDIRECT_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font>settings.LOGIN_REDIRECT_URL</font></span></tt></a><font>（默认为</font><tt class="docutils literal"><span class="pre"><font>/帐户/公司简介/</font></span></tt><font>）。</font><font>如果登录不成功，它重新显示登录表单。</font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_REDIRECT_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font></font></span></tt></a><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font></li>
</ul>
<p><font><font>提供登录表单模板称为</font></font><tt class="docutils literal"><span class="pre"><font><font>注册/ login.html</font></font></span></tt><font><font>默认情况下，</font><font>这是你的责任
 </font><font>。</font><font>此模板传递四个模板上下文变量：</font></font></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>形式</font></font></span></tt><font><font>：一个</font><font>登录表单的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/forms/api/#django.forms.Form" title="django.forms.Form"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>Form</font></font></span></tt></a><font><font>对象。</font><font>看到</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/forms/"><em><font><font>形式的文件，</font></font></em></a><font><font>为更多的</font></font><tt class="docutils literal"><span class="pre"><font><font>表格</font></font></span></tt><font><font>对象。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>下一个</font></font></span></tt><font><font>：成功登录后重定向的URL。</font><font>这可能包含一个查询字符串。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>网站</font></font></span></tt><font><font>：目前的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/sites/#django.contrib.sites.models.Site" title="django.contrib.sites.models.Site"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>站点</font></font></span></tt></a><font><font>，根据</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-SITE_ID"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>SITE_ID</font></font></span></tt></a><font><font>设置。</font><font>如果你没有安装网站的框架，这将被设定为一个实例
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/sites/#django.contrib.sites.models.RequestSite" title="django.contrib.sites.models.RequestSite"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>RequestSite</font></font></span></tt></a><font><font>，这源于从目前的网站名称和域名
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="django.http.HttpRequest的"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>的HttpRequest</font></font></span></tt></a><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>SITE_NAME</font></font></span></tt><font><font>：一个别名</font></font><tt class="docutils literal"><span class="pre"><font><font>site.name的</font></font></span></tt><font><font>。</font><font>如果你没有安装网站的框架，这将被设定为价值
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.META" title="django.http.HttpRequest.META"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>request.META ['SERVER_NAME'] </font></font></span></tt></a><font><font>。</font><font>为更多的网站上，看到</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/sites/"><em><font><font>的“地王”的框架</font></font></em></a><font><font>。</font></font></li>
</ul>
<p><font><font>如果你不希望调用模板</font></font><tt class="file docutils literal"><span class="pre"><font><font>注册/ login.html</font></font></span></tt><font><font>，你可以传递</font><font>额外的参数</font><font>，</font></font><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>通过参数在你的URLconf。</font><font>例如，这个URLconf的行会使用
 </font></font><tt class="file docutils literal"><span class="pre"><font><font>MyApp的/ login.html</font></font></span></tt><font><font>：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="p"><font></font></span><span class="s"><font><font>（ R </font><font>'^帐户/登录/ $' </font></font></span><span class="p"><font><font>，</font></font></span> <span class="s"><font><font>'django.contrib.auth.views.login' </font></font></span><span class="p"><font><font>，</font></font></span> <span class="p"><font><font>{ </font></font></span><span class="s"><font><font>'TEMPLATE_NAME' </font></font></span><span class="p"><font><font>：</font></font></span> <span class="s"><font><font>'MyApp的/ login.html' </font></font></span><span class="p"><font><font>}）</font></font></span>
</pre></div>
</div>
<p><font><font>您还可以指定</font></font><tt class="docutils literal"><span class="pre"><font><font>GET</font></font></span></tt><font><font>字段，它包含的URL重定向到登录后，通过</font></font><tt class="docutils literal"><span class="pre"><font><font>redirect_field_name</font></font></span></tt><font><font>视图</font><font>的名称</font><font>。</font><font>默认情况下，该领域被称为</font></font><tt class="docutils literal"><span class="pre"><font><font>下</font></font></span></tt><font><font>。</font></font></p>
<p><font><font>这里是一个示例</font></font><tt class="file docutils literal"><span class="pre"><font><font>注册/ login.html</font></font></span></tt><font><font>模板，你可以使用作为一个起点。</font><font>它假定你有一个</font></font><tt class="file docutils literal"><span class="pre"><font><font>base.html的</font></font></span></tt><font><font>模板，它定义了一个</font></font><tt class="docutils literal"><span class="pre"><font><font>内容</font></font></span></tt><font><font>块：</font></font></p>
<div class="highlight-html+django"><div class="highlight"><pre><span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>延伸</font></font></span> <span class="s2"><font><font>“base.html” </font></font></span> <span class="cp"><font><font>％} </font></font></span>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>负载</font></font></span> <span class="nv"><font><font>URL </font></font></span> <span class="nv"><font></font></span> <span class="nv"><font><font>今后</font></font></span> <span class="cp"><font><font>％}</font></font></span><font></font>
<font></font>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>块</font></font></span> <span class="nv"><font><font>内容</font></font></span> <span class="cp"><font><font>％}</font></font></span><font></font>
<font></font>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font></font></span> <span class="nv"><font></font></span> <span class="cp"><font></font></span>
<span class="nt"><font></font></span><font><font>你</font><span class="k"><font>如果</font></span><span class="nv"><font>form.errors </font></span><span class="cp"><font>％} </font></span><span class="nt"><font>&lt;P&gt;的</font></span><font>用户名和密码不匹配。</font><font>请再试一次。</font></font><span class="nt"><font><font>&lt;/ P&gt; </font></font></span>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>ENDIF </font></font></span> <span class="cp"><font><font>％}</font></font></span><font></font>
<font></font>
<span class="nt">&lt;form</span> <span class="na">method=</span><span class="s">"post"</span> <span class="na">action=</span><span class="s">"</span><span class="cp">{%</span> <span class="k">url</span> <span class="s1">'django.contrib.auth.views.login'</span> <span class="cp">%}</span><span class="s">"</span><span class="nt">&gt;</span>
<span class="cp">{%</span> <span class="k">csrf_token</span> <span class="cp">%}</span>
<span class="nt">&lt;table&gt;</span>
<span class="nt">&lt;tr&gt;</span>
    <span class="nt">&lt;td&gt;</span><span class="cp">{{</span> <span class="nv">form.username.label_tag</span> <span class="cp">}}</span><span class="nt">&lt;/td&gt;</span>
    <span class="nt">&lt;td&gt;</span><span class="cp">{{</span> <span class="nv">form.username</span> <span class="cp">}}</span><span class="nt">&lt;/td&gt;</span>
<span class="nt">&lt;/tr&gt;</span>
<span class="nt">&lt;tr&gt;</span>
    <span class="nt">&lt;td&gt;</span><span class="cp">{{</span> <span class="nv">form.password.label_tag</span> <span class="cp">}}</span><span class="nt">&lt;/td&gt;</span>
    <span class="nt">&lt;td&gt;</span><span class="cp">{{</span> <span class="nv">form.password</span> <span class="cp">}}</span><span class="nt">&lt;/td&gt;</span>
<span class="nt">&lt;/tr&gt;</span>
<span class="nt">&lt;/table&gt;</span><font></font>
<font></font>
<span class="nt"><font><font>&lt;输入</font></font></span> <span class="na"><font><font>类型= </font></font></span><span class="s"><font><font>“提交” </font></font></span> <span class="na"><font><font>值= </font></font></span><span class="s"><font><font>“登录” </font></font></span> <span class="nt"><font><font>/&gt; </font></font></span>
<span class="nt"><font><font>&lt;输入</font></font></span> <span class="na"><font><font>类型= </font></font></span><span class="s"><font><font>“隐藏” </font></font></span> <span class="na"><font><font>名称= </font></font></span><span class="s"><font><font>“下一步” </font></font></span> <span class="na"><font><font>值= </font></font></span><span class="s"><font><font>“ </font></font></span><span class="cp"><font><font>{{ </font></font></span> <span class="nv"><font><font>下</font></font></span> <span class="cp"><font><font>} </font></font></span><span class="s"><font><font>“ </font></font></span> <span class="nt"><font><font>/&gt; </font></font></span>
<span class="nt"><font><font>&lt;/ FORM&gt;</font></font></span><font></font>
<font></font>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>endblock </font></font></span> <span class="cp"><font><font>％}</font></font></span>
</pre></div>
</div>
<div class="versionadded">
<span class="title"><font><font>在Django 1.2的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.2/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font><font>如果您正在使用备用身份验证（见
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authentication-backends"><em><font><font>其他验证来源</font></font></em></a><font><font>），您可以通过自定义身份验证形式，通过登录查看</font></font><tt class="docutils literal"><span class="pre"><font><font>authentication_form</font></font></span></tt><font><font>参数。</font><font>本表格必须接受一个</font></font><tt class="docutils literal"><span class="pre"><font><font>请求，</font></font></span></tt><font><font>在其关键字参数</font></font><tt class="docutils literal"><span class="pre"><font><font>__init__</font></font></span></tt><font><font>方法，并提供一个</font></font><tt class="docutils literal"><span class="pre"><font><font>GET_USER</font></font></span></tt><font><font>方法，它返回的身份验证的用户对象（此方法只表单验证成功后调用）。</font></font></p>
<div class="versionadded">
<span class="title"><font><font>在Django 1.4的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.4/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.login" title="django.contrib.auth.views.login"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>登录（）</font></font></span></tt></a><font><font>视图和</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#other-built-in-views"><em><font><font>其他内置的看法</font></font></em></a><font><font>现在都返回一个</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/template-response/#django.template.response.TemplateResponse" title="django.template.response.TemplateResponse"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>TemplateResponse</font></font></span></tt></a><font><font>实例，这使得您可以轻松地自定义渲染前的响应数据。</font><font>有关详细信息，请参阅
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/template-response/"><em><font><font>TemplateResponse文件</font></font></em></a><font><font>。</font></font></p>
</dd></dl>

</div>
</div>
<div class="section" id="s-module-django.contrib.auth.views">
<span id="s-id2"></span><span id="s-other-built-in-views"></span><span id="module-django.contrib.auth.views"></span><span id="id2"></span><span id="other-built-in-views"></span><h3><font><font>其他内置意见</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth.views" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>除了</font></font><tt class="xref py py-func docutils literal"><span class="pre"><font><font>​​登录（） </font></font></span></tt><font><font>，</font><font>认证系统包括了其他一些有用的内置在位于意见
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth.views" title="django.contrib.auth.views"><tt class="xref py py-mod docutils literal"><span class="pre"><font><font>django.contrib.auth.views</font></font></span></tt></a><font><font>：</font></font></p>
<dl class="function">
<dt id="django.contrib.auth.views.logout">
<tt class="descname"><font><font>注销</font></font></tt><font><font>（</font></font><em><font><font>请求</font></font></em><span class="optional"><font><font>[ </font></font></span><font></font><em><font><font>next_page</font></font></em><font><font>，</font></font><em><font><font>TEMPLATE_NAME</font></font></em><font><font>，</font></font><em><font><font>redirect_field_name </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.logout" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>记录用户。</font></font></p>
<p><strong><font><font>URL名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>注销</font></font></span></tt></p>
<p><font><font>见</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/http/urls/"><em><font><font>的URL文件，</font></font></em></a><font><font>使用命名的URL模式的详细信息。</font></font></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>next_page</font></font></span></tt><font><font>：URL重定向到后注销。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>：模板的全名，用户登录后显示。</font><font>为默认
 </font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ logged_out.html的</font></font></span></tt><font><font>，如果没有提供参数。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>redirect_field_name</font></font></span></tt><font><font>：一个名字</font></font><tt class="docutils literal"><span class="pre"><font><font>的GET</font></font></span></tt><font><font>字段中包含的URL重定向后注销。</font><font>覆盖</font></font><tt class="docutils literal"><span class="pre"><font><font>next_page</font></font></span></tt><font><font>如果给定的
 </font></font><tt class="docutils literal"><span class="pre"><font><font>GET</font></font></span></tt><font><font>参数传递。</font></font></li>
</ul>
<p><strong><font><font>模板背景：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>标题</font></font></span></tt><font><font>：字符串“登出”，本地化。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>网站</font></font></span></tt><font><font>：目前的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/sites/#django.contrib.sites.models.Site" title="django.contrib.sites.models.Site"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>站点</font></font></span></tt></a><font><font>，根据</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-SITE_ID"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>SITE_ID</font></font></span></tt></a><font><font>设置。</font><font>如果你没有安装网站的框架，这将被设定为一个实例
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/sites/#django.contrib.sites.models.RequestSite" title="django.contrib.sites.models.RequestSite"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>RequestSite</font></font></span></tt></a><font><font>，这源于从目前的网站名称和域名
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="django.http.HttpRequest的"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>的HttpRequest</font></font></span></tt></a><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>SITE_NAME</font></font></span></tt><font><font>：一个别名</font></font><tt class="docutils literal"><span class="pre"><font><font>site.name的</font></font></span></tt><font><font>。</font><font>如果你没有安装网站的框架，这将被设定为价值
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.META" title="django.http.HttpRequest.META"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>request.META ['SERVER_NAME'] </font></font></span></tt></a><font><font>。</font><font>为更多的网站上，看到</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/sites/"><em><font><font>的“地王”的框架</font></font></em></a><font><font>。</font></font></li>
</ul>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.logout_then_login">
<tt class="descname"><font><font>logout_then_login</font></font></tt><font><font>（</font></font><em><font><font>请求</font></font></em><span class="optional"><font><font>[</font></font></span><font><font>，</font></font><em><font><font>LOGIN_URL </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.logout_then_login" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>登录用户，然后重定向到登录页面。</font></font></p>
<p><strong><font><font>URL名称：</font></font></strong><font><font>没有提供默认的URL</font></font></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>LOGIN_URL</font></font></span></tt><font><font>：重定向到登录页面的URL。</font><font>默认为</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>settings.LOGIN_URL</font></font></span></tt></a><font><font>如果不提供。</font></font></li>
</ul>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.password_change">
<tt class="descname"><font><font>password_change</font></font></tt><font><font>（</font></font><em><font><font>请求</font></font></em><span class="optional"><font></font></span><font><font>，</font></font><em><font><font>TEMPLATE_NAME</font></font></em><font><font>，</font></font><em><font><font>post_change_redirect</font></font></em><font><font>，</font></font><em><font><font>password_change_form </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.password_change" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>允许用户更改其密码。</font></font></p>
<p><strong><font><font>网址名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>password_change</font></font></span></tt></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>：模板显示更改密码的形式使用的全名。</font><font>到默认
 </font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ password_change_form.html的，</font></font></span></tt><font><font>如果不提供。</font></font></p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>post_change_redirect</font></font></span></tt><font><font>：URL重定向成功后更改密码。</font></font></p>
<div class="versionadded">
<span class="title"><font><font>在Django 1.2的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.2/"><em><font><font>请参阅发行说明</font></font></em></a></div>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>password_change_form</font></font></span></tt><font><font>：定制的“更改密码”必须接受</font></font><tt class="docutils literal"><span class="pre"><font><font>用户的</font></font></span></tt><font><font>关键字参数的</font><font>形式</font><font>。</font><font>形式是负责实际更改用户的密码。</font><font>为默认
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.PasswordChangeForm" title="django.contrib.auth.forms.PasswordChangeForm"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>PasswordChangeForm</font></font></span></tt></a><font><font>。</font></font></p>
</li>
</ul>
<p><strong><font><font>模板背景：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>形式</font></font></span></tt><font><font>：更改密码的形式（见</font></font><tt class="docutils literal"><span class="pre"><font><font>password_change_form</font></font></span></tt><font><font>以上）。</font></font></li>
</ul>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.password_change_done">
<tt class="descname"><font><font>password_change_done</font></font></tt><font><font>（</font></font><em><font><font>请求</font></font></em><span class="optional"><font><font>[</font></font></span><font><font>，</font></font><em><font><font>TEMPLATE_NAME </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.password_change_done" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>所示的页面后，用户已经改变了自己的密码。</font></font></p>
<p><strong><font><font>URL名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>password_change_done</font></font></span></tt></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>：模板使用全名。</font><font>到默认</font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ password_change_done.html的，</font></font></span></tt><font><font>如果不提供。</font></font></li>
</ul>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.password_reset">
<tt class="descname">password_reset</tt>(<em>request</em><span class="optional">[</span>, <em>is_admin_site</em>, <em>template_name</em>, <em>email_template_name</em>, <em>password_reset_form</em>, <em>token_generator</em>, <em>post_reset_redirect</em>, <em>from_email</em><span class="optional">]</span>)<a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.password_reset" title="一篇以这个定义">¶</a></dt>
<dd><p><font><font>允许用户重置其密码，生成一个一次性使用可用于重置密码的链接，发送链接到用户的注册电子邮件地址。</font></font></p>
<div class="versionchanged">
<span class="title"><font><font>在Django 1.3 </font></font></span><font><font>：</font></font><tt class="docutils literal"><span class="pre"><font><font>from_email</font></font></span></tt><font><font>参数</font><span class="title"><font>变化</font></span><font>增加了。</font></font></div>
<div class="versionchanged">
<span class="title"><font><font>在Django 1.4改变：</font></font></span><font><font>用户无法使用的密码（见标记
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.set_unusable_password" title="django.contrib.auth.models.User.set_unusable_password"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>set_unusable_password（）</font></font></span></tt></a><font><font> 
将无法要求重设密码，防止误操作，使用时如LDAP外部认证源。</font></font></div>
<p><strong><font><font>网址名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>password_reset</font></font></span></tt></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>：用于显示密码重置表单模板的全名。</font><font>为默认
 </font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/口令重</font></font></span></tt><font><font>，如果不提供。</font></font></p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>email_template_name</font></font></span></tt><font><font>：模板生成新密码的电子邮件使用的全名。</font><font>到默认
 </font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ password_reset_email.html的，</font></font></span></tt><font><font>如果不提供。</font></font></p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>subject_template_name</font></font></span></tt><font><font>：模板的全名，使用新密码的电子邮件的主题。</font><font>到默认</font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ password_reset_subject.txt的，</font></font></span></tt><font><font>如果不提供。</font></font></p>
<div class="versionadded">
<span class="title"><font><font>在Django 1.4的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.4/"><em><font><font>请参阅发行说明</font></font></em></a></div>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>password_reset_form</font></font></span></tt><font><font>：将用于设置密码的表格。</font><font>默认以</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.PasswordResetForm" title="django.contrib.auth.forms.PasswordResetForm"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>PasswordResetForm</font></font></span></tt></a><font><font>。</font></font></p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>token_generator</font></font></span></tt><font><font>：类的实例来检查密码。</font><font>这将默认</font></font><tt class="docutils literal"><span class="pre"><font><font>default_token_generator</font></font></span></tt><font><font>，它是一个实例
 </font></font><tt class="docutils literal"><span class="pre"><font><font>django.contrib.auth.tokens.PasswordResetTokenGenerator</font></font></span></tt><font><font>。</font></font></p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>post_reset_redirect</font></font></span></tt><font><font>：URL重定向成功后更改密码。</font></font></p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre"><font><font>from_email</font></font></span></tt><font><font>：一个有效的电子邮件地址。</font><font>默认情况下Django使用的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-DEFAULT_FROM_EMAIL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>DEFAULT_FROM_EMAIL</font></font></span></tt></a><font><font>。，</font></font></p>
</li>
</ul>
<p><strong><font><font>模板背景：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>表格</font></font></span></tt><font><font>：表格（见</font></font><tt class="docutils literal"><span class="pre"><font><font>password_reset_form</font></font></span></tt><font><font>上述重置用户的密码）。</font></font></li>
</ul>
<p><strong><font><font>电子邮件模板背景：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>电子邮件</font></font></span></tt><font><font>：一个别名</font></font><tt class="docutils literal"><span class="pre"><font><font>user.email</font></font></span></tt></li>
<li><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt><font><font>：当前</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>，根据</font></font><tt class="docutils literal"><span class="pre"><font><font>电子邮件</font></font></span></tt><font><font>形式领域。</font><font>只有活跃用户重置其密码（</font></font><tt class="docutils literal"><span class="pre"><font><font>User.is_active </font></font></span> <span class="pre"><font><font>是</font></font></span> <span class="pre"><font><font>真</font></font></span></tt><font><font>）。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>SITE_NAME</font></font></span></tt><font><font>：一个别名</font></font><tt class="docutils literal"><span class="pre"><font><font>site.name的</font></font></span></tt><font><font>。</font><font>如果你没有安装网站的框架，这将被设定为价值
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.META" title="django.http.HttpRequest.META"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>request.META ['SERVER_NAME'] </font></font></span></tt></a><font><font>。</font><font>为更多的网站上，看到</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/contrib/sites/"><em><font><font>的“地王”的框架</font></font></em></a><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>域</font></font></span></tt><font><font>：别名</font></font><tt class="docutils literal"><span class="pre"><font><font>site.domain</font></font></span></tt><font><font>。</font><font>如果你没有安装网站的框架，这将被设置的的价值
 </font></font><tt class="docutils literal"><span class="pre"><font><font>request.get_host（） </font></font></span></tt><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>协议</font></font></span></tt><font><font>：HTTP或HTTPS</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>UID</font></font></span></tt><font><font>：基地36编码的用户ID。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>令牌</font></font></span></tt><font><font>：令牌检查密码是有效的。</font></font></li>
</ul>
<p><font><font>样品</font></font><tt class="docutils literal"><span class="pre"><font><font>登记/ password_reset_email.html</font></font></span></tt><font><font>（电子邮件正文模板）：</font></font></p>
<div class="highlight-html+django"><div class="highlight"><pre><span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>负载</font></font></span> <span class="nv"><font><font>URL </font></font></span> <span class="nv"><font></font></span> <span class="nv"><font><font>今后</font></font></span> <span class="cp"><font><font>％}</font></font></span><font><font> 
有人问电子邮件密码重置</font></font><span class="cp"><font><font>{{ </font></font></span> <span class="nv"><font><font>电子邮件</font></font></span> <span class="cp"><font><font>}</font></font></span><font><font>。</font><font>下面的链接：
 </font></font><span class="cp"><font><font>{{ </font></font></span> <span class="nv"><font><font>协议</font></font></span><span class="cp"><font><font>}}</font></font></span><font><font> :/ / </font></font><span class="cp"><font><font>{{ </font></font></span> <span class="nv"><font><font>SITE_NAME </font></font></span> <span class="cp"><font><font>}} {％</font></font></span> <span class="k"><font><font>URL </font></font></span> <span class="s1"><font><font>'auth_password_reset_confirm' </font></font></span> <span class="nv"><font><font>uidb36 </font></font></span><span class="o"><font><font>= </font></font></span><span class="nv"><font><font>UID </font></font></span> <span class="nv"><font><font>令牌</font></font></span><span class="o"><font><font>= </font></font></span><span class="nv"><font><font>令牌</font></font></span> <span class="cp"><font><font>％}</font></font></span>
</pre></div>
</div>
<p><font><font>同一模板的情况下用于主题模板。</font><font>主题必须是一行纯文本字符串。</font></font></p>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.password_reset_done">
<tt class="descname"><font><font>password_reset_done</font></font></tt><font><font>（</font></font><em><font><font>请求</font></font></em><span class="optional"><font><font>[</font></font></span><font><font>，</font></font><em><font><font>TEMPLATE_NAME </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.password_reset_done" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>所示的页面后，用户已通过电子邮件发送的链接重置其密码。</font><font>这种观点被称为默认情况下，如果</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.password_reset" title="django.contrib.auth.views.password_reset"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>password_reset（）</font></font></span></tt></a><font><font>视图不有明确</font></font><tt class="docutils literal"><span class="pre"><font><font>post_reset_redirect“</font></font></span></tt><font><font> URL集。</font></font></p>
<p><strong><font><font>URL名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>password_reset_done</font></font></span></tt></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>：模板使用全名。</font><font>到默认</font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ password_reset_done.html的，</font></font></span></tt><font><font>如果不提供。</font></font></li>
</ul>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.password_reset_confirm">
<tt class="descname">password_reset_confirm</tt>(<em>request</em><span class="optional">[</span>, <em>uidb36</em>, <em>token</em>, <em>template_name</em>, <em>token_generator</em>, <em>set_password_form</em>, <em>post_reset_redirect</em><span class="optional">]</span>)<a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.password_reset_confirm" title="一篇以这个定义">¶</a></dt>
<dd><p><font><font>提出了一种形式进入一个新的密码。</font></font></p>
<p><strong><font><font>网址名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>password_reset_confirm</font></font></span></tt></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>uidb36</font></font></span></tt><font><font>：基地36编码的用户ID。</font><font>为默认</font></font><tt class="xref docutils literal"><span class="pre"><font><font>没有</font></font></span></tt><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>令牌</font></font></span></tt><font><font>：令牌检查密码是有效的。</font><font>为默认
 </font></font><tt class="xref docutils literal"><span class="pre"><font><font>没有</font></font></span></tt><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>：模板，以显示“确认密码”视图的全名。</font><font>默认值是</font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ password_reset_confirm.html</font></font></span></tt><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>token_generator</font></font></span></tt><font><font>：类的实例来检查密码。</font><font>这将默认</font></font><tt class="docutils literal"><span class="pre"><font><font>default_token_generator</font></font></span></tt><font><font>，它是一个实例
 </font></font><tt class="docutils literal"><span class="pre"><font><font>django.contrib.auth.tokens.PasswordResetTokenGenerator</font></font></span></tt><font><font>。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>set_password_form</font></font></span></tt><font><font>：将用于设置密码的表格。</font><font>默认以</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.SetPasswordForm" title="django.contrib.auth.forms.SetPasswordForm"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>SetPasswordForm</font></font></span></tt></a></li>
<li><tt class="docutils literal"><span class="pre"><font><font>post_reset_redirect</font></font></span></tt><font><font>：URL重定向后的密码重置完成。</font><font>为默认</font></font><tt class="xref docutils literal"><span class="pre"><font><font>没有</font></font></span></tt><font><font>。</font></font></li>
</ul>
<p><strong><font><font>模板背景：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>表格</font></font></span></tt><font><font>：表格（见</font></font><tt class="docutils literal"><span class="pre"><font><font>set_password_form</font></font></span></tt><font><font>以上设置新用户的密码）。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>validlink</font></font></span></tt><font><font>：布尔，True，如果链接（uidb36和令牌的组合）是有效或闲置。</font></font></li>
</ul>
</dd></dl>

<dl class="function">
<dt id="django.contrib.auth.views.password_reset_complete">
<tt class="descname"><font><font>password_reset_complete</font></font></tt><font><font>（</font></font><em><font><font>请求</font></font></em><span class="optional"><font><font>[</font></font></span><font><font>，</font></font><em><font><font>TEMPLATE_NAME </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.password_reset_complete" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>提出了通知，已成功更改密码的用户。</font></font></p>
<p><strong><font><font>URL名称：</font></font></strong> <tt class="docutils literal"><span class="pre"><font><font>password_reset_complete</font></font></span></tt></p>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>TEMPLATE_NAME</font></font></span></tt><font><font>：显示视图模板的全名。</font><font>为默认</font></font><tt class="file docutils literal"><span class="pre"><font><font>登记/ password_reset_complete.html的</font></font></span></tt><font><font>。</font></font></li>
</ul>
</dd></dl>

</div>
<div class="section" id="s-helper-functions">
<span id="helper-functions"></span><h3><font><font>Helper函数</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#helper-functions" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<dl class="function">
<dt id="django.contrib.auth.views.redirect_to_login">
<tt class="descname"><font><font>redirect_to_login</font></font></tt><font><font>（</font></font><em><font><font>下</font></font></em><span class="optional"><font></font></span><font><font>，</font></font><em><font><font>LOGIN_URL</font></font></em><font><font>，</font></font><em><font><font>redirect_field_name </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.redirect_to_login" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>重定向到登录页面，然后再返回到另一个登录成功后的URL。</font></font></p>
<p><strong><font><font>必需的参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>下</font></font></span></tt><font><font>：登录成功后重定向的URL。</font></font></li>
</ul>
<p><strong><font><font>可选参数：</font></font></strong></p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre"><font><font>LOGIN_URL</font></font></span></tt><font><font>：重定向到登录页面的URL。</font><font>默认为</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>settings.LOGIN_URL</font></font></span></tt></a><font><font>如果不提供。</font></font></li>
<li><tt class="docutils literal"><span class="pre"><font><font>redirect_field_name</font></font></span></tt><font><font>：一个名字</font></font><tt class="docutils literal"><span class="pre"><font><font>的GET</font></font></span></tt><font><font>字段中包含的URL重定向后注销。</font><font>覆盖</font></font><tt class="docutils literal"><span class="pre"><font><font>下</font></font></span></tt><font><font>，如果给定的
 </font></font><tt class="docutils literal"><span class="pre"><font><font>GET</font></font></span></tt><font><font>参数传递。</font></font></li>
</ul>
</dd></dl>

</div>
<div class="section" id="s-module-django.contrib.auth.forms">
<span id="s-built-in-forms"></span><span id="module-django.contrib.auth.forms"></span><span id="built-in-forms"></span><h3><font><font>内置的形式</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth.forms" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>如果你不希望使用内置的意见，但希望不用写这个功能的形式方便，认证系统提供了几个内置的形式位于</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth.forms" title="django.contrib.auth.forms"><tt class="xref py py-mod docutils literal"><span class="pre"><font><font>django.contrib.auth.forms</font></font></span></tt></a><font><font>：</font></font></p>
<dl class="class">
<dt id="django.contrib.auth.forms.AdminPasswordChangeForm">
<em class="property"><font><font>类</font></font></em><tt class="descname"><font><font>AdminPasswordChangeForm </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.AdminPasswordChangeForm" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>在用于更改用户的密码管理界面的一种形式。</font></font></p>
</dd></dl>

<dl class="class">
<dt id="django.contrib.auth.forms.AuthenticationForm">
<em class="property"><font><font>类</font></font></em><tt class="descname"><font><font>AuthenticationForm </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.AuthenticationForm" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>一个用于记录用户英寸的形式</font></font></p>
</dd></dl>

<dl class="class">
<dt id="django.contrib.auth.forms.PasswordChangeForm">
<em class="property"><font><font>类</font></font></em><tt class="descname"><font><font>PasswordChangeForm </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.PasswordChangeForm" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>允许用户更改其密码的表格。</font></font></p>
</dd></dl>

<dl class="class">
<dt id="django.contrib.auth.forms.PasswordResetForm">
<em class="property"><font><font>类</font></font></em><tt class="descname"><font><font>PasswordResetForm </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.PasswordResetForm" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>一种一次性使用的链接重置用户的密码生成和发送电子邮件的形式。</font></font></p>
</dd></dl>

<dl class="class">
<dt id="django.contrib.auth.forms.SetPasswordForm">
<em class="property"><font><font>类</font></font></em><tt class="descname"><font><font>SetPasswordForm </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.SetPasswordForm" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>一个表单，允许用户改变他/她的密码，输入旧密码。</font></font></p>
</dd></dl>

<dl class="class">
<dt id="django.contrib.auth.forms.UserChangeForm">
<em class="property"><font><font>类</font></font></em><tt class="descname"><font><font>UserChangeForm </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.UserChangeForm" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>在管理界面用来改变一个用户的信息和权限的一种形式。</font></font></p>
</dd></dl>

<dl class="class">
<dt id="django.contrib.auth.forms.UserCreationForm">
<em class="property"><font><font>类</font></font></em><tt class="descname"><font><font>UserCreationForm </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.forms.UserCreationForm" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>一个用于创建一个新用户的形式。</font></font></p>
</dd></dl>

</div>
<div class="section" id="s-limiting-access-to-logged-in-users-that-pass-a-test">
<span id="limiting-access-to-logged-in-users-that-pass-a-test"></span><h3><font><font>限制访问登录的用户通过测试</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-users-that-pass-a-test" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>基于某些权限或其他一些测试，以限制访问，你基本上做同样的事情，如在上一节所述。</font></font></p>
<p><font><font>最简单的方法是运行测试</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.user" title="django.http.HttpRequest.user"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>request.user</font></font></span></tt></a><font><font>直接在视图。</font><font>例如，这一观点进行检查，以确保用户被记录在权限
 </font></font><tt class="docutils literal"><span class="pre"><font><font>polls.can_vote</font></font></span></tt><font><font>：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="k"><font><font>DEF </font></font></span> <span class="nf"><font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="k"><font><font>如果</font></font></span> <span class="ow"><font><font>没有</font></font></span> <span class="n"><font><font>要求</font></font></span><span class="o"><font></font></span><span class="n"><font><font>的用户</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>has_perm </font></font></span><span class="p"><font><font>（</font></font></span><span class="s"><font><font>“polls.can_vote </font></font></span><span class="p"><font><font>）：</font></font></span>
        <span class="k"><font><font>返回</font></font></span> <span class="n"><font><font>的HttpResponse </font></font></span><span class="p"><font><font>（</font></font></span><span class="s"><font><font>“你不能在本次调查中投票” </font></font></span><span class="p"><font><font>）</font></font></span>
    <span class="c"><font><font>＃...</font></font></span>
</pre></div>
</div>
<dl class="function">
<dt id="django.contrib.auth.decorators.user_passes_test">
<tt class="descname"><font><font>user_passes_test</font></font></tt><font><font> </font></font><em><font><font>（</font></font></em><span class="optional"><font></font></span><font><font> FUNC ，</font></font><em><font><font>LOGIN_URL =无</font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.user_passes_test" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>作为一种快捷 ​​方式，您可以使用的方便</font></font><tt class="docutils literal"><span class="pre"><font><font>user_passes_test</font></font></span></tt><font><font>装饰：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>从</font></font></span> <span class="nn"><font><font>django.contrib.auth.decorators </font></font></span> <span class="kn"><font><font>进口</font></font></span> <span class="n"><font><font>user_passes_test</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ user_passes_test </font></font></span><span class="p"><font></font></span><span class="k"><font><font>（ λ </font></font></span> <span class="n"><font><font>U </font></font></span><span class="p"><font><font>：</font></font></span> <span class="n"><font><font>U </font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>has_perm </font></font></span><span class="p"><font><font>（</font></font></span><span class="s"><font><font>“polls.can_vote” </font></font></span><span class="p"><font><font>））</font></font></span>
<span class="k"><font><font>DEF </font></font></span> <span class="nf"><font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="o"><font><font>...</font></font></span>
</pre></div>
</div>
<p><font><font>我们使用这个特殊的测试，作为一个相对简单的例子。</font><font>不过，如果你只是想测试一下是否是提供给用户的权限，你可以使用</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.permission_required" title="django.contrib.auth.decorators.permission_required"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>permission_required（）</font></font></span></tt></a><font><font> 
装饰，在本文档后面的描述。</font></font></p>
<p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.user_passes_test" title="django.contrib.auth.decorators.user_passes_test"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>user_passes_test（）</font></font></span></tt></a><font><font>需要一个必需的参数：调用一个
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>对象，并</font></font><tt class="xref docutils literal"><span class="pre"><font><font>返回</font></font></span></tt><font><font> True，</font><font>如果允许用户查看页面。</font><font>请注意，
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.user_passes_test" title="django.contrib.auth.decorators.user_passes_test"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>user_passes_test（）</font></font></span></tt></a><font><font>不会自动检查</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>是不是匿名。</font></font></p>
<p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.user_passes_test" title="django.contrib.auth.decorators.user_passes_test"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>user_passes_test（）</font></font></span></tt></a><font><font>带有一个可选的的</font><font>参数</font></font><tt class="docutils literal"><span class="pre"><font><font>LOGIN_URL</font></font></span></tt><font><font>，它可以让您指定您的登录页面（网址</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>settings.LOGIN_URL的</font></font></span></tt></a><font><font>默认）。</font></font></p>
<p><font><font>例如：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>从</font></font></span> <span class="nn"><font><font>django.contrib.auth.decorators </font></font></span> <span class="kn"><font><font>进口</font></font></span> <span class="n"><font><font>user_passes_test</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ user_passes_test </font></font></span><span class="p"><font></font></span><span class="k"><font><font>（ λ </font></font></span> <span class="n"><font><font>U </font></font></span><span class="p"><font><font>：</font></font></span> <span class="n"><font><font>U </font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>has_perm </font></font></span><span class="p"><font><font>（</font></font></span><span class="s"><font><font>“polls.can_vote </font></font></span><span class="p"><font><font>），</font></font></span> <span class="n"><font><font>LOGIN_URL </font></font></span><span class="o"><font><font>= </font></font></span><span class="s"><font><font>'/登录/' </font></font></span><span class="p"><font><font>）</font></font></span>
<span class="k"><font></font></span> <span class="nf"><font><font>my_view </font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="o"><font><font>...</font></font></span>
</pre></div>
</div>
</dd></dl>

<div class="section" id="s-the-permission-required-decorator">
<span id="the-permission-required-decorator"></span><h4><font><font>permission_required装饰</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#the-permission-required-decorator" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<dl class="function">
<dt id="django.contrib.auth.decorators.permission_required">
<tt class="descname"><font><font>permission_required</font></font></tt><font><font>（</font></font><span class="optional"><font><font>[ </font></font></span><em><font><font>LOGIN_URL =无</font></font></em><font><font>，</font></font><em><font><font>raise_exception = FALSE </font></font></em><span class="optional"><font><font>]</font></font></span><font><font>）</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.permission_required" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>这是一种比较常见的任务，以检查用户是否具有特定的权限。</font><font>出于这个原因，Django提供了一个快捷键：这种情况下
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.permission_required" title="django.contrib.auth.decorators.permission_required"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>permission_required（）</font></font></span></tt></a><font><font>装饰。</font><font>使用此装饰，前面的例子可以写成：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>，从</font></font></span> <span class="nn"><font><font>django.contrib.auth.decorators </font></font></span> <span class="kn"><font><font>导入</font></font></span> <span class="n"><font><font>permission_required</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ permission_required </font></font></span><span class="p"><font><font>（</font></font></span><span class="s"><font><font>“polls.can_vote </font></font></span><span class="p"><font><font>）</font></font></span>
<span class="k"><font><font>DEF </font></font></span> <span class="nf"><font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="o"><font><font>...</font></font></span>
</pre></div>
</div>
<p><font><font>至于的</font></font><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>User.has_perm（）</font></font></span></tt><font><font>方法，权限名的格式为
 </font></font><tt class="docutils literal"><span class="pre"><font><font>“&lt;应用程序</font></font></span> <span class="pre"><font><font>标签。&lt;准许</font></font></span> <span class="pre"><font><font>代号&gt;“ </font></font></span></tt><font><font>（</font><font>即</font></font><tt class="docutils literal"><span class="pre"><font><font>polls.can_vote</font></font></span></tt><font><font>对模型中的</font></font><tt class="docutils literal"><span class="pre"><font><font>调查</font></font></span></tt><font><font>申请</font><font>许可</font><font>）。</font></font></p>
<p><font><font>请注意，</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.decorators.permission_required" title="django.contrib.auth.decorators.permission_required"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>permission_required（）</font></font></span></tt></a><font><font> 
也需要可选</font></font><tt class="docutils literal"><span class="pre"><font><font>LOGIN_URL</font></font></span></tt><font><font>参数。</font><font>例如：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>，从</font></font></span> <span class="nn"><font><font>django.contrib.auth.decorators </font></font></span> <span class="kn"><font><font>导入</font></font></span> <span class="n"><font><font>permission_required</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ permission_required </font></font></span><span class="p"><font><font>（</font></font></span><span class="s"><font><font>“polls.can_vote </font></font></span><span class="p"><font></font></span> <span class="n"><font><font>LOGIN_URL </font></font></span><span class="o"><font><font>= </font></font></span><span class="s"><font><font>'/ loginpage / </font></font></span><span class="p"><font><font>）</font></font></span>
<span class="k"><font><font>DEF </font></font></span> <span class="nf"><font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>请求</font></font></span><span class="p"><font><font>）：</font></font></span>
    <span class="o"><font><font>...</font></font></span>
</pre></div>
</div>
<p><font><font>在</font><font>装饰的</font></font><tt class="xref py py-func docutils literal"><span class="pre"><font><font>login_required（） </font></font></span></tt><font><font>，</font></font><tt class="docutils literal"><span class="pre"><font><font>LOGIN_URL</font></font></span></tt><font><font> 
默认</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-LOGIN_URL"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>settings.LOGIN_URL</font></font></span></tt></a><font><font>。</font></font></p>
<div class="versionchanged">
<span class="title"><font><font>在Django 1.4更改：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.4/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font><font>新增</font></font><tt class="docutils literal"><span class="pre"><font><font>raise_exception</font></font></span></tt><font><font>参数。</font><font>如果给出，将提高</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/exceptions/#django.core.exceptions.PermissionDenied" title="django.core.exceptions.PermissionDenied"><tt class="xref py py-exc docutils literal"><span class="pre"><font><font>PermissionDenied</font></font></span></tt></a><font><font>装饰
 </font><font>，</font><font>而不是重定向到登录页面</font><font>提示
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/http/views/#http-forbidden-view"><em><font><font>403（HTTP紫禁城）查看</font></font></em></a><font><font>。</font></font></p>
</dd></dl>

</div>
</div>
<div class="section" id="s-limiting-access-to-generic-views">
<span id="limiting-access-to-generic-views"></span><h3><font><font>限制访问的通用视图</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-generic-views" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>为了限制进入一个</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/class-based-views/"><em><font><font>基于类的通用视图</font></font></em></a><font><font>，装饰</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.base.View.dispatch" title="django.views.generic.base.View.dispatch"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>View.dispatch</font></font></span></tt></a><font><font> 
类的方法。</font><font>见</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/class-based-views/#id1"><em><font><font>装饰类</font></font></em></a><font><font>的细节。</font></font></p>
<div class="section" id="s-function-based-generic-views">
<span id="function-based-generic-views"></span><h4><font><font>基于函数的的仿制意见</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#function-based-generic-views" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<p><font><font>为了限制进入一个</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/generic-views/"><em><font><font>基于函数的通用视图</font></font></em></a><font><font>，写薄包装周围的看法，并指出你的URLconf包装，而不是通用视图本身。</font><font>例如：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>从</font></font></span> <span class="nn"><font><font>django.views.generic.date_based </font></font></span> <span class="kn"><font><font>进口</font></font></span> <span class="n"><font><font>object_detail并</font></font></span><font></font>
<font></font>
<span class="nd"><font><font>@ login_required，</font></font></span>
<span class="k"><font><font>DEF </font></font></span> <span class="nf"><font><font>limited_object_detail </font></font></span><span class="p"><font><font>（</font></font></span><span class="o"><font><font>* </font></font></span><span class="n"><font><font>参数</font></font></span><span class="p"><font><font>，</font></font></span> <span class="o"><font><font>** </font></font></span><span class="n"><font><font>kwargs </font></font></span><span class="p"><font><font>）的</font></font></span>
    <span class="k"><font><font>回报</font></font></span> <span class="n"><font><font>object_detail并</font></font></span><span class="p"><font><font>（</font></font></span><span class="o"><font><font>* </font></font></span><span class="n"><font><font>参数</font></font></span><span class="p"><font><font>，</font></font></span> <span class="o"><font><font>** </font></font></span><span class="n"><font><font>kwargs </font></font></span><span class="p"><font><font>）</font></font></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="section" id="s-permissions">
<span id="s-id3"></span><span id="permissions"></span><span id="id3"></span><h2><font><font>权限</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#permissions" title="固定链接到这个标题"><font><font>¶</font></font></a></h2>
<p><font><font>Django自带了一个简单的权限系统。</font><font>它提供了一种将权限分配给特定的用户和用户组。</font></font></p>
<p><font><font>它的使用Django的admin站点，但欢迎你使用它在自己的代码。</font></font></p>
<p><font><font>Django的admin站点使用权限如下：</font></font></p>
<ul class="simple">
<li><font><font>进入查看“附加”的形式，并添加“添加”这种类型的对象的权限的用户对象是有限的。</font></font></li>
<li><font><font>访问，以查看更改列表，查看“变化”的形式，改变一个对象限于与“变”这种类型的对象的权限给用户。</font></font></li>
<li><font><font>访问要删除的对象仅限于与该类型的对象为“删除”许可给用户。</font></font></li>
</ul>
<p><font><font>全局权限被设置为每个类型的对象，而不是每个具体的对象实例。</font><font>例如，它是可能说“玛丽可能改变新闻故事，”但它是不是目前可能到说：“玛丽可能改变新闻故事，但只有那些她创造自己”或“玛丽可能只改变新闻故事具有一定的地位，出版日期或身份证。“ </font><font>后者的功能是Django开发人员目前正在讨论的东西。</font></font></p>
<div class="section" id="s-default-permissions">
<span id="default-permissions"></span><h3><font><font>默认权限，</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#default-permissions" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>当</font></font><tt class="docutils literal"><span class="pre"><font><font>django.contrib.auth</font></font></span></tt><font><font>列在您的</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-INSTALLED_APPS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>INSTALLED_APPS中</font></font></span></tt></a><font><font> 
设置，它会确保三个默认权限-添加，更改和删除-在你安装的应用程序中定义的每个Django模型的创建。</font></font></p>
<p><font><font>这些权限将被创建，当你运行</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font><font>manage.py </font></font></span> <span class="pre"><font><font>的SyncDB</font></font></span></tt></a><font><font> ;你第一次运行</font></font><tt class="docutils literal"><span class="pre"><font><font>的SyncDB </font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font><font>django.contrib.auth</font></font></span></tt><font><font>后加入
 </font><font>到</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-INSTALLED_APPS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>INSTALLED_APPS中</font></font></span></tt></a><font><font>，默认的权限将被创建为以前安装的所有车型，以及任何新车型当时安装。</font><font>随后，它会创建默认权限的新车型，每次你运行</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font><font>manage.py </font></font></span> <span class="pre"><font><font>的SyncDB</font></font></span></tt></a><font><font>。</font></font></p>
<p><font><font>假设你有一个带有的应用
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/models/options/#django.db.models.Options.app_label" title="django.db.models.Options.app_label"><tt class="xref py py-attr docutils literal"><span class="pre"><font><font>app_label</font></font></span></tt></a> <tt class="docutils literal"><span class="pre"><font><font> foo</font></font></span></tt><font><font>和模型命名的</font></font><tt class="docutils literal"><span class="pre"><font><font>酒吧</font></font></span></tt><font><font>，以测试基本的权限，你应该使用：</font></font></p>
<ul class="simple">
<li><font><font>地址：</font></font><tt class="docutils literal"><span class="pre"><font><font>user.has_perm（foo.add_bar'）</font></font></span></tt></li>
<li><font><font>变化：</font></font><tt class="docutils literal"><span class="pre"><font><font>user.has_perm（foo.change_bar“）</font></font></span></tt></li>
<li><font><font>删除：</font></font><tt class="docutils literal"><span class="pre"><font><font>user.has_perm（“foo.delete_bar”）</font></font></span></tt></li>
</ul>
</div>
<div class="section" id="s-custom-permissions">
<span id="s-id4"></span><span id="custom-permissions"></span><span id="id4"></span><h3><font><font>自定义权限，</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>对于一个给定的模型对象来创建自定义权限，使用</font></font><tt class="docutils literal"><span class="pre"><font><font>权限</font></font></span></tt>
<a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/db/models/#meta-options"><em><font><font>模型的Meta属性</font></font></em></a><font><font>。</font></font></p>
<p><font><font>这个例子任务模型创建三个自定义的权限，即用户可以或不可以做任务实例的操作，具体到您的应用程序：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="k"><font><font>类</font></font></span> <span class="nc"><font><font>任务</font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>模型</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font></font></span><span class="p"><font><font>：</font></font></span>
    <span class="o"><font><font>... </font></font></span>
    <span class="k"><font><font>类</font></font></span> <span class="nc"><font><font>元</font></font></span><span class="p"><font><font>：</font></font></span>
        <span class="n"><font><font>权限</font></font></span> <span class="o"><font><font>= </font></font></span> <span class="p"><font><font>（</font></font></span>
            <span class="p"><font><font>（</font></font></span><span class="s"><font><font>“view_task” ，</font></font></span><span class="p"><font><font>“可以看到可用的任务” </font></font></span> <span class="s"><font></font></span><span class="p"><font><font>）， </font></font></span>
            <span class="p"><font><font>（</font></font></span><span class="s"><font><font>“change_task_status” ，</font></font></span><span class="p"><font><font>“可以改变任务状态” </font></font></span> <span class="s"><font></font></span><span class="p"><font><font>）， </font></font></span>
            <span class="p"><font><font>（</font></font></span><span class="s"><font><font>“close_task”。</font></font></span><span class="p"><font></font></span> <span class="s"><font><font>“可以删除其状态设置为封闭的任务” </font></font></span><span class="p"><font><font>）， </font></font></span>
        <span class="p"><font><font>）</font></font></span>
</pre></div>
</div>
<p><font><font>这样做是唯一当你运行</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-syncdb"><tt class="xref std std-djadmin docutils literal"><span class="pre"><font><font>manage.py </font></font></span> <span class="pre"><font><font>的SyncDB</font></font></span></tt></a><font><font>创建这些额外的权限
 </font><font>。</font><font>你的代码是负责检查这些权限的价值，当用户试图访问的应用程序提供的功能（查看任务，改变任务的状态，关闭任务。）继续上面的例子，下面的检查，如果用户可以查看任务：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n"><font><font>用户</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>has_perm </font></font></span><span class="p"><font><font>（</font></font></span><span class="s"><font><font>'app.view_task“ </font></font></span><span class="p"><font><font>）</font></font></span>
</pre></div>
</div>
</div>
<div class="section" id="s-id5">
<span id="id5"></span><h3><font><font>API参考</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id5" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<dl class="class">
<dt id="django.contrib.auth.models.models.Permission">
<em class="property"><font><font>类</font></font></em><tt class="descclassname"><font><font>模型。</font></font></tt><tt class="descname"><font><font>权限</font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.models.Permission" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd></dd></dl>

<div class="section" id="s-id6">
<span id="id6"></span><h4><font><font>领域</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id6" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<p><tt class="xref py py-class docutils literal"><span class="pre"><font><font>权限</font></font></span></tt><font><font>对象有下列领域：</font></font></p>
<dl class="attribute">
<dt id="django.contrib.auth.models.Permission.name">
<tt class="descclassname"><font><font>权限。</font></font></tt><tt class="descname"><font><font>名称</font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.Permission.name" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>必需的。</font><font>50个字符或更少。</font><font>例如：</font></font><tt class="docutils literal"><span class="pre"><font><font>“ </font></font></span> <span class="pre"><font><font>投票“</font></font></span></tt><font><font>。</font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.Permission.content_type">
<tt class="descclassname"><font><font>权限。</font></font></tt><tt class="descname"><font><font>CONTENT_TYPE </font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.Permission.content_type" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>必需的。</font><font>到</font><font>数据库表</font></font><tt class="docutils literal"><span class="pre"><font><font>django_content_type</font></font></span></tt><font><font>，其中包含了为每个已安装的Django模型的纪录。</font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.models.Permission.codename">
<tt class="descclassname"><font><font>权限。</font></font></tt><tt class="descname"><font><font>代号</font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.Permission.codename" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>必需的。</font><font>100个字符或更少。</font><font>例如：</font></font><tt class="docutils literal"><span class="pre"><font><font>can_vote“ </font></font></span></tt><font><font>。</font></font></p>
</dd></dl>

</div>
<div class="section" id="s-id7">
<span id="id7"></span><h4><font><font>方法</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id7" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<p><tt class="xref py py-class docutils literal"><span class="pre"><font><font>权限</font></font></span></tt><font><font>对象有像任何其他标准的数据访问方法</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/models/instances/"><em><font><font>的Django模型</font></font></em></a><font><font>。</font></font></p>
</div>
</div>
<div class="section" id="s-programmatically-creating-permissions">
<span id="programmatically-creating-permissions"></span><h3><font><font>编程创建权限，</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#programmatically-creating-permissions" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>虽然自定义权限，可以在模型的定义</font></font><tt class="docutils literal"><span class="pre"><font><font>元</font></font></span></tt><font><font>类，你也可以创建权限直接。</font><font>例如，您可以创建的
 </font></font><tt class="docutils literal"><span class="pre"><font><font>can_publish</font></font></span></tt><font><font>在模型</font></font><tt class="docutils literal"><span class="pre"><font><font>BlogPost </font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font><font>myapp的</font></font></span></tt><font><font>权限</font><font>：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="kn">import</span> <span class="n">Group</span><span class="p">,</span> <span class="n">Permission</span>
<span class="kn">from</span> <span class="nn">django.contrib.contenttypes.models</span> <span class="kn">import</span> <span class="n">ContentType</span><font></font>
<font></font>
<span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span>
<span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font></font></span><span class="p"><font></font></span>
                                       <span class="n"><font></font></span><span class="o"><font></font></span><span class="s"><font><font>发布帖子“ </font></font></span><span class="p"><font><font>，</font></font></span>
                                       <span class="n"><font><font>CONTENT_TYPE </font></font></span><span class="o"><font><font>= </font></font></span><span class="n"><font><font>CONTENT_TYPE </font></font></span><span class="p"><font><font>）</font></font></span>
</pre></div>
</div>
<p><font><font>权限然后可以分配给一个
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font>通过其</font></font><tt class="docutils literal"><span class="pre"><font><font>user_permissions</font></font></span></tt><font><font> 
属性或一个</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.Group" title="django.contrib.auth.models.Group"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>集团</font></font></span></tt></a><font><font>通过其
 </font></font><tt class="docutils literal"><span class="pre"><font><font>权限</font></font></span></tt><font><font>属性。</font></font></p>
</div>
</div>
<div class="section" id="s-authentication-data-in-templates">
<span id="authentication-data-in-templates"></span><h2><font><font>验证模板中的数据</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authentication-data-in-templates" title="固定链接到这个标题"><font><font>¶</font></font></a></h2>
<p><font><font>当前登录的用户和他/她的权限，在可用
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/templates/api/"><em><font><font>模板的情况下，</font></font></em></a><font><font>当您使用
 </font></font><tt class="xref py py-class docutils literal"><span class="pre"><font><font>的RequestContext</font></font></span></tt><font><font>。</font></font></p>
<div class="admonition-technicality admonition ">
<p class="first admonition-title"><font><font>技术性</font></font></p>
<p class="last"><font><font>从技术上讲，这些变量只在模板中，如果您使用</font></font><tt class="xref py py-class docutils literal"><span class="pre"><font><font>的RequestContext</font></font></span></tt> <em><font><font>和</font></font></em><font><font>你
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-TEMPLATE_CONTEXT_PROCESSORS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>TEMPLATE_CONTEXT_PROCESSORS</font></font></span></tt></a><font><font>设置包含
 </font></font><tt class="docutils literal"><span class="pre"><font><font>“django.contrib.auth.context_processors.auth” </font></font></span></tt><font><font>，</font><font>这是默认的。</font><font>如需更多信息，请参阅</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/templates/api/#subclassing-context-requestcontext"><em><font><font>RequestContext的文档</font></font></em></a><font><font>。</font></font></p>
</div>
<div class="section" id="s-id8">
<span id="id8"></span><h3><font><font>用户</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id8" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>当渲染一个模板</font></font><tt class="xref py py-class docutils literal"><span class="pre"><font><font>的RequestContext</font></font></span></tt><font><font>，当前登录的用户，无论是   </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>用户</font></font></span></tt></a><font><font> 
实例或</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.AnonymousUser" title="django.contrib.auth.models.AnonymousUser"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>AnonymousUser</font></font></span></tt></a><font><font>实例的，存储在模板变量</font></font><tt class="docutils literal"><span class="pre"><font><font>{{ </font></font></span> <span class="pre"><font><font>用户</font></font></span> <span class="pre"><font><font>}} </font></font></span></tt><font><font>：</font></font></p>
<div class="highlight-html+django"><div class="highlight"><pre><span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>如果</font></font></span> <span class="nv"><font><font>user.is_authenticated </font></font></span> <span class="cp"><font><font>％，} </font></font></span>
    <span class="nt"><font><font>&lt;P&gt;</font></font></span><font><font>欢迎，</font></font><span class="cp"><font><font>{{ </font></font></span> <span class="nv"><font><font>user.username </font></font></span> <span class="cp"><font><font>}} </font></font></span><font><font>。</font></font><span class="nt"><font><font>&lt;/ P&gt; </font></font></span>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font></font></span> <span class="cp"><font><font>％} </font></font></span>
    <span class="nt"><font><font>&lt;P&gt;</font></font></span><font><font>欢迎新用户</font><font>登录</font><font>。</font><font>请登录</font></font><span class="nt"><font><font>&lt;/ P&gt; </font></font></span>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>ENDIF </font></font></span> <span class="cp"><font><font>％}</font></font></span>
</pre></div>
</div>
<p><font></font><tt class="docutils literal"><span class="pre"><font><font>RequestContext的</font></font></span></tt><font><font>是</font><font>如果</font><font>没有被使用，</font><font>不可用此模板的上下文变量</font><font>。</font></font></p>
</div>
<div class="section" id="s-id9">
<span id="id9"></span><h3><font><font>权限</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id9" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>当前登录用户的权限存储在模板变量
 </font></font><tt class="docutils literal"><span class="pre"><font><font>{{ </font></font></span> <span class="pre"><font><font>烫发</font></font></span> <span class="pre"><font><font>}</font></font></span></tt><font><font>。</font><font>这是一个的实例
 </font></font><tt class="xref py py-class docutils literal"><span class="pre"><font><font>django.contrib.auth.context_processors.PermWrapper</font></font></span></tt><font><font>，这是一个模板友好的代理权限。</font></font></p>
<div class="versionchanged">
<span class="title"><font><font>改变：在Django 1.3</font></font></span><font><font>在1.3版本之前，的</font></font><tt class="docutils literal"><span class="pre"><font><font>PermWrapper</font></font></span></tt><font><font>位于在
 </font></font><tt class="docutils literal"><span class="pre"><font><font>django.contrib.auth.context_processors</font></font></span></tt><font><font>。</font></font></div>
<p><font></font><tt class="docutils literal"><span class="pre"><font><font>{{ </font></font></span> <span class="pre"><font><font>烫发</font></font></span> <span class="pre"><font><font>}</font></font></span></tt><font><font>对象，单属性查找是一个代理
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_module_perms" title="django.contrib.auth.models.User.has_module_perms"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>User.has_module_perms</font></font></span></tt></a><font><font>。</font><font>这个例子将显示</font><font>如果登录用户</font><tt class="docutils literal"><span class="pre"><font>foo的</font></span></tt><font>应用程序</font><font>中的任何权限</font><font>：</font></font><tt class="xref docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font></p>
<div class="highlight-python"><pre><font><font>{{perms.foo}</font></font></pre>
</div>
<p><font><font>两个级别的属性查找代理
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_perm" title="django.contrib.auth.models.User.has_perm"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>User.has_perm</font></font></span></tt></a><font><font>。</font><font>这个例子将显示</font><font>如果登录用户的权限
 </font><tt class="docutils literal"><span class="pre"><font>foo.can_vote</font></span></tt><font>：</font></font><tt class="xref docutils literal"><span class="pre"><font></font></span></tt><font></font><tt class="docutils literal"><span class="pre"><font></font></span></tt><font></font></p>
<div class="highlight-python"><pre><font><font>{{perms.foo.can_vote}</font></font></pre>
</div>
<p><font><font>因此，你可以检查模板的权限</font></font><tt class="docutils literal"><span class="pre"><font><font>{％</font></font></span> <span class="pre"><font></font></span> <span class="pre"><font><font>％}</font></font></span></tt><font><font>语句：</font></font></p>
<div class="highlight-html+django"><div class="highlight"><pre><span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>如果</font></font></span> <span class="nv"><font><font>perms.foo </font></font></span> <span class="cp"><font><font>％} </font></font></span>
    <span class="nt"><font><font>&lt;P&gt;“</font></font></span><font><font>你有权限在foo应用程序做的东西。</font></font><span class="nt"><font><font>&lt;/ P&gt; </font></font></span>
    <span class="cp"><font><font>{％，</font></font></span> <span class="k"><font><font>如果</font></font></span> <span class="nv"><font><font>perms.foo.can_vote </font></font></span> <span class="cp"><font><font>％} </font></font></span>
        <span class="nt"><font><font>&lt;P&gt;</font></font></span><font><font>可以投票！</font></font><span class="nt"><font><font>&lt;/ P&gt; </font></font></span>
    <span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>ENDIF </font></font></span> <span class="cp"><font><font>％} </font></font></span>
    <span class="cp"><font><font>{％，</font></font></span> <span class="k"><font><font>如果</font></font></span> <span class="nv"><font><font>perms.foo.can_drive </font></font></span> <span class="cp"><font><font>％} </font></font></span>
        <span class="nt"><font><font>&lt;P&gt;</font></font></span><font><font>你可以开车！</font></font><span class="nt"><font><font>&lt;/ P&gt; </font></font></span>
    <span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>ENDIF </font></font></span> <span class="cp"><font><font>％} </font></font></span>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font></font></span> <span class="cp"><font><font>％} </font></font></span>
    <span class="nt"><font><font>&lt;P&gt;</font></font></span><font><font>您没有权限做任何在foo应用程序。</font></font><span class="nt"><font><font>&lt;/ P&gt; </font></font></span>
<span class="cp"><font><font>{％</font></font></span> <span class="k"><font><font>ENDIF </font></font></span> <span class="cp"><font><font>％}</font></font></span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="s-groups">
<span id="groups"></span><h2><font><font>组</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#groups" title="固定链接到这个标题"><font><font>¶</font></font></a></h2>
<p><font><font>组是一个通用的方式分类，用户，所以你可以申请的权限，或者一些其他的标签，向这些用户。</font><font>一个用户可以属于任何组的数量。</font></font></p>
<p><font><font>一个组中的用户自动授予该组的权限。</font><font>例如，如果该组</font></font><tt class="docutils literal"><span class="pre"><font><font>网站</font></font></span> <span class="pre"><font><font>编辑</font></font></span></tt><font><font>有权限
 </font></font><tt class="docutils literal"><span class="pre"><font><font>can_edit_home_page</font></font></span></tt><font><font>，任何在该组的用户将拥有该权限。</font></font></p>
<p><font><font>超越权限，团体是一个方便的方式来分类，用户给他们一些标签，或扩展功能。</font><font>例如，你可以创建一组</font></font><tt class="docutils literal"><span class="pre"><font><font>“特殊</font></font></span> <span class="pre"><font><font>用户“</font></font></span></tt><font><font>，你可以写代码，可以说，让他们访问您网站的成员，只有部分，或只成员的电子邮件发送给他们。</font></font></p>
<div class="section" id="s-id10">
<span id="id10"></span><h3><font><font>API参考</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id10" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<dl class="class">
<dt id="django.contrib.auth.models.Group">
<em class="property"><font><font>类</font></font></em><tt class="descclassname"><font><font>模型。</font></font></tt><tt class="descname"><font><font>集团</font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.Group" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd></dd></dl>

<div class="section" id="s-id11">
<span id="id11"></span><h4><font><font>领域</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id11" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<p><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.Group" title="django.contrib.auth.models.Group"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>组</font></font></span></tt></a><font><font>对象有下列领域：</font></font></p>
<dl class="attribute">
<dt id="django.contrib.auth.Group.name">
<tt class="descclassname"><font><font>集团。</font></font></tt><tt class="descname"><font><font>名称</font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.Group.name" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>必需的。</font><font>80个字符或更少。</font><font>允许任何字符。</font><font>例如：
 </font></font><tt class="docutils literal"><span class="pre"><font><font>“真棒</font></font></span> <span class="pre"><font><font>用户“</font></font></span></tt><font><font>。</font></font></p>
</dd></dl>

<dl class="attribute">
<dt id="django.contrib.auth.Group.permissions">
<tt class="descclassname"><font><font>集团。</font></font></tt><tt class="descname"><font><font>权限，</font></font></tt><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.Group.permissions" title="一篇以这个定义"><font><font>¶</font></font></a></dt>
<dd><p><font><font>许多到许多领域的</font></font><tt class="xref py py-class docutils literal"><span class="pre"><font><font>权限</font></font></span></tt><font><font>：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">group</span><span class="o">.</span><span class="n">permissions</span> <span class="o">=</span> <span class="p">[</span><span class="n">permission_list</span><span class="p">]</span>
<span class="n">group</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">permission</span><span class="p">,</span> <span class="n">permission</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
<span class="n">group</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">permission</span><span class="p">,</span> <span class="n">permission</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
<span class="n">group</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
</div>
<div class="section" id="s-other-authentication-sources">
<span id="s-authentication-backends"></span><span id="other-authentication-sources"></span><span id="authentication-backends"></span><h2><font><font>其他验证来源</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#other-authentication-sources" title="固定链接到这个标题"><font><font>¶</font></font></a></h2>
<p><font><font>Django自带的认证，最常见的情况是好的，但你可能需要挂接到另一个验证来源 - 也就是说，用户名和密码或身份验证方法的另一个来源。</font></font></p>
<p><font><font>例如，你的公司可能已经有了一个LDAP存储为每一位员工的用户名和密码的设置。</font><font>这将会是一个网络管理员和用户自己的麻烦，如果用户在LDAP和基于Django的应用有不同的帐户。</font></font></p>
<p><font><font>因此，处理这样的情况下，Django的认证系统，可以让你插入其他验证来源。</font><font>你可以重载Django默认的数据库为基础的计划，或者你可以使用默认的系统与其他系统串联。</font></font></p>
<p><font><font>看到</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/authbackends/"><em><font><font>认证后端</font></font></em></a><font><font> 
的</font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/authbackends/"><em><font>参考</font></em></a><font>信息，包括与Django的认证后端。</font></font></p>
<div class="section" id="s-specifying-authentication-backends">
<span id="specifying-authentication-backends"></span><h3><font><font>指定的认证后端</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#specifying-authentication-backends" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>在幕后，Django的维护“认证后端”，它的认证检查名单。</font><font>当有人呼吁
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.authenticate" title="django.contrib.auth.authenticate"><tt class="xref py py-func docutils literal"><span class="pre"><font><font>django.contrib.auth.authenticate（）</font></font></span></tt></a><font><font> -作为在描述</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-to-log-a-user-in"><em><font><font>如何登录在</font></font></em></a><font><font>上述</font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-to-log-a-user-in"><em><font>用户</font></em></a><font> - Django尝试跨所有的认证后端验证。</font><font>如果第一的身份验证方法失败了，Django尝试第二个，等等，直到所有后端已经尝试。</font></font></p>
<p><font><font>清单的验证后端使用指定
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-AUTHENTICATION_BACKENDS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>AUTHENTICATION_BACKENDS</font></font></span></tt></a><font><font>设置的。</font><font>这应该是一个Python的路径名的tuple这一点，知道如何验证的Python类。</font><font>这些类可以在任何地方在你的Python路径。</font></font></p>
<p><font><font>默认情况下，</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-AUTHENTICATION_BACKENDS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>AUTHENTICATION_BACKENDS</font></font></span></tt></a><font><font>设置为：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="p"><font><font>（</font></font></span><span class="s"><font><font>“django.contrib.auth.backends.ModelBackend </font></font></span><span class="p"><font><font>，）</font></font></span>
</pre></div>
</div>
<p><font><font>这是基本的身份验证方案，检查Django用户数据库。</font></font></p>
<p><font><font>所以</font><font>阶</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-AUTHENTICATION_BACKENDS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>AUTHENTICATION_BACKENDS</font></font></span></tt></a><font><font>事项，如果相同的用户名和密码在多个后端是有效的，Django将停止在第一个积极的匹配处理。</font></font></p>
<div class="admonition note">
<p class="first admonition-title"><font><font>注意</font></font></p>
<p class="last"><font><font>一旦用户认证，Django的商店，它的后端是用来验证用户在用户的会话，并重新使用相同的后端，该届会议期间随时访问当前经过身份验证的用户需要。</font><font>这实际上意味着，验证来源缓存，每一个会话的基础上所以如果更改
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-AUTHENTICATION_BACKENDS"><tt class="xref std std-setting docutils literal"><span class="pre"><font><font>AUTHENTICATION_BACKENDS</font></font></span></tt></a><font><font>，你需要清除会话数据，如果需要强制用户重新进行身份验证使用不同的方法。</font><font>一个简单的办法做到这一点仅仅是执行</font></font><tt class="docutils literal"><span class="pre"><font><font>Session.objects.all（），删除（） </font></font></span></tt><font><font>。</font></font></p>
</div>
</div>
<div class="section" id="s-writing-an-authentication-backend">
<span id="writing-an-authentication-backend"></span><h3><font><font>编写一个认证后端</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#writing-an-authentication-backend" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>一个认证后端是一个类实现两种方法：
 </font></font><tt class="docutils literal"><span class="pre"><font><font>GET_USER（USER_ID）</font></font></span></tt><font><font>和</font></font><tt class="docutils literal"><span class="pre"><font><font>验证（**凭据）</font></font></span></tt><font><font>。</font></font></p>
<p><font></font><tt class="docutils literal"><span class="pre"><font><font>GET_USER</font></font></span></tt><font><font>方法采用</font></font><tt class="docutils literal"><span class="pre"><font><font>user_id的</font></font></span></tt><font><font> -这可能是一个用户名，数据库ID或其他-并返回</font></font><tt class="docutils literal"><span class="pre"><font><font>一个</font></font></span></tt><font><font> User </font><font>对象。</font></font></p>
<p><font></font><tt class="docutils literal"><span class="pre"><font><font>验证</font></font></span></tt><font><font>方法作为关键字参数的凭据。</font><font>大部分时间，它只是看起来像这样：</font></font></p>
<div class="highlight-python"><pre><font><font>的类MyBackend（对象）：</font></font><font></font><font><font>
    高清认证（自我，用户名=密码=无）：</font></font><font></font><font><font>
        ＃检查用户名/密码，并返回用户。</font></font></pre>
</div>
<p><font><font>但它也可以进行身份​​验证令牌，像这样：</font></font></p>
<div class="highlight-python"><pre><font><font>的类MyBackend（对象）：</font></font><font></font><font><font>
    高清认证（自我，令牌=无）：</font></font><font></font><font><font>
        ＃检查令牌，并返回用户。</font></font></pre>
</div>
<p><font><font>无论哪种方式，</font></font><tt class="docutils literal"><span class="pre"><font><font>验证</font></font></span></tt><font><font>应检查它得到的凭证，它应该返回一个</font></font><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt><font><font>对象匹配的凭据，如果凭据是有效的。</font><font>如果他们没有有效的，它应该</font></font><tt class="xref docutils literal"><span class="pre"><font><font>返回</font></font></span></tt><font><font> None </font><font>。</font></font></p>
<p><font><font>Django的admin系统紧密结合Django的</font></font><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt><font><font>在本文开头所描述的对象。</font><font>现在，最好的方式来处理这个是创建一个Django </font></font><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt><font><font>对象存在于你的后端（例如，在您的LDAP目录，你的外部SQL数据库等），您可以编写一个脚本来做到这一点，为每个用户在提前，或您的</font></font><tt class="docutils literal"><span class="pre"><font><font>身份验证</font></font></span></tt><font><font> 
方法可以做到这一点，用户第一次登录</font></font></p>
<p><font><font>下面是一个例子后端，对用户名和密码变量定义在</font></font><tt class="docutils literal"><span class="pre"><font><font>settings.py</font></font></span></tt><font><font>文件</font><font>进行身份验证，</font><font>并创建一个Django </font></font><tt class="docutils literal"><span class="pre"><font><font>用户</font></font></span></tt><font><font> 
对象首次验证用户：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn"><font><font>从</font></font></span> <span class="nn"><font><font>django.conf </font></font></span> <span class="kn"><font><font>进口</font></font></span> <span class="n"><font><font>设置</font></font></span>
<span class="kn"><font><font>从</font></font></span> <span class="nn"><font><font>django.contrib.auth.models </font></font></span> <span class="kn"><font><font>进口</font></font></span> <span class="n"><font><font>用户</font></font></span><span class="p"><font><font>，</font></font></span> <span class="n"><font><font>check_password</font></font></span><font></font>
<font></font>
<span class="k"><font><font>类</font></font></span> <span class="nc"><font><font>SettingsBackend </font></font></span><span class="p"><font><font>（</font></font></span><span class="nb"><font><font>对象</font></font></span><span class="p"><font><font>）： </font></font></span>
    <span class="sd"><font><font>“” </font><font>身份</font></font></span>
<span class="sd"><font><font>    验证对设置ADMIN_LOGIN和ADMIN_PASSWORD的。</font></font></span><font></font>
<font></font>
<span class="sd"><font><font>    使用的登录名和密码的哈希。</font><font>例如：</font></font></span><font></font>
<font></font>
<span class="sd"><font><font>    ADMIN_LOGIN ='admin'的</font></font></span>
<span class="sd"><font><font>    ADMIN_PASSWORD ='SHA1美元4e987 $ afbcf42e21bd417fb71db8c66b321e9fc33051de“ </font></font></span>
<span class="sd"><font><font>    “”“</font></font></span><font></font>
<font></font>
    <span class="n"><font><font>supports_inactive_user </font></font></span> <span class="o"><font><font>= </font></font></span> <span class="bp"><font><font>FALSE</font></font></span><font></font>
<font></font>
    <span class="k"><font></font></span> <span class="nf"><font></font></span><span class="p"><font></font></span><span class="bp"><font></font></span><span class="p"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="bp"><font></font></span><span class="p"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="bp"><font></font></span><span class="p"><font></font></span>
        <span class="n"><font></font></span> <span class="o"><font></font></span> <span class="p"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="p"><font></font></span>
        <span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
        <span class="k"><font></font></span> <span class="n"><font></font></span> <span class="ow"><font></font></span> <span class="n"><font></font></span><span class="p"><font></font></span>
            <span class="k"><font></font></span><span class="p"><font></font></span>
                <span class="n"><font></font></span> <span class="o"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span><span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
            <span class="k"><font></font></span> <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
                <span class="c"><font><font>创建一个新用户。</font><font>请注意，我们可以设置密码</font></font></span>
                <span class="c"><font><font>＃什么，因为它不会被检查;密码</font></font></span>
                <span class="c"><font><font>。从settings.py将</font></font></span>
                <span class="n"><font><font>用户的</font></font></span> <span class="o"><font></font></span> <span class="n"><font><font>用户</font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>用户名</font></font></span><span class="o"><font><font>=用户</font></font></span><span class="n"><font><font>名</font></font></span><span class="p"><font><font>，</font></font></span> <span class="n"><font><font>密码</font></font></span><span class="o"><font><font>= </font></font></span><span class="s"><font><font>'从settings.py“ </font></font></span><span class="p"><font><font>）</font></font></span>
                <span class="n"><font><font>的用户</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>is_staff </font></font></span> <span class="o"><font><font>= </font></font></span> <span class="bp"><font><font>TRUE </font></font></span>
                <span class="n"><font><font>用户</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font></font></span> <span class="o"><font></font></span> <span class="bp"><font></font></span>
                <span class="n"><font></font></span><span class="o"><font></font></span><span class="n"><font></font></span><span class="p"><font></font></span>
            <span class="k"><font></font></span> <span class="n"><font></font></span>
        <span class="k"><font></font></span> <span class="bp"><font></font></span><font></font>
<font></font>
    <span class="k"><font><font>，DEF </font></font></span> <span class="nf"><font><font>GET_USER </font></font></span><span class="p"><font><font>（</font></font></span><span class="bp"><font><font>自我</font></font></span><span class="p"><font><font>，</font></font></span> <span class="n"><font><font>USER_ID </font></font></span><span class="p"><font><font>）：</font></font></span>
        <span class="k"><font><font>尝试</font></font></span><span class="p"><font><font>：</font></font></span>
            <span class="k"><font><font>返回</font></font></span> <span class="n"><font><font>用户</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>对象</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font></font></span><span class="p"><font><font>（</font></font></span><span class="n"><font><font>PK </font></font></span><span class="o"><font><font>= </font></font></span><span class="n"><font><font>USER_ID </font></font></span><span class="p"><font><font>）</font></font></span>
        <span class="k"><font><font>除</font></font></span> <span class="n"><font><font>用户</font></font></span><span class="o"><font><font>。</font></font></span><span class="n"><font><font>DoesNotExist </font></font></span><span class="p"><font><font>：</font></font></span>
            <span class="k"><font><font>回报</font></font></span> <span class="bp"><font><font>没有</font></font></span>
</pre></div>
</div>
</div>
<div class="section" id="s-handling-authorization-in-custom-backends">
<span id="handling-authorization-in-custom-backends"></span><h3><font><font>在自定义的后端处理授权</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#handling-authorization-in-custom-backends" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>自定义身份验证后端可以提供自己的权限。</font></font></p>
<p><font><font>用户模型将委托权限查询功能（</font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_group_permissions" title="django.contrib.auth.models.User.get_group_permissions"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>get_group_permissions（）中</font></font></span></tt></a><font><font>，
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_all_permissions" title="django.contrib.auth.models.User.get_all_permissions"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>get_all_permissions（）中</font></font></span></tt></a><font><font>，
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_perm" title="django.contrib.auth.models.User.has_perm"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>has_perm（） </font></font></span></tt></a><font><font>，
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.has_module_perms" title="django.contrib.auth.models.User.has_module_perms"><tt class="xref py py-meth docutils literal"><span class="pre"><font><font>has_module_perms（） </font></font></span></tt></a><font><font>）</font><font>以任何身份验证后端实现这些功能。</font></font></p>
<p><font><font>提供给用户的权限，将所有后端返回的所有权限的超集。</font><font>也就是说，Django授予权限的用户，任何一个后端补助。</font></font></p>
<p><font><font>上面简单的后端，可以实现神奇的管理员权限，相当简单：</font></font></p>
<div class="highlight-python"><div class="highlight"><pre><span class="k"><font><font>的类</font></font></span> <span class="nc"><font><font>SettingsBackend </font></font></span><span class="p"><font><font>（</font></font></span><span class="nb"><font><font>对象</font></font></span><span class="p"><font><font>）：</font></font></span><font></font>
<font></font>
    <span class="c"><font><font>＃...</font></font></span><font></font>
<font></font>
    <span class="k">def</span> <span class="nf">has_perm</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_obj</span><span class="p">,</span> <span class="n">perm</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
        <span class="k">if</span> <span class="n">user_obj</span><span class="o">.</span><span class="n">username</span> <span class="o">==</span> <span class="n">settings</span><span class="o">.</span><span class="n">ADMIN_LOGIN</span><span class="p">:</span>
            <span class="k">return</span> <span class="bp">True</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="k">return</span> <span class="bp">False</span>
</pre></div>
</div>
<p><font><font>这充分的权限授予用户访问上面的例子。</font><font>请注意所有后端身份验证功能的用户对象作为参数，他们也接受相同的论点相关
 </font></font><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User" title="django.contrib.auth.models.User"><tt class="xref py py-class docutils literal"><span class="pre"><font><font>django.contrib.auth.models.User</font></font></span></tt></a><font><font>功能。</font></font></p>
<p><font></font><a class="reference external" href="https://code.djangoproject.com/browser/django/trunk/django/contrib/auth/backends.py"><font><font>django的/的contrib /认证/ backends.py</font></font></a><font><font>，这是默认的后端和查询的</font></font><tt class="docutils literal"><span class="pre"><font><font>auth_permission</font></font></span></tt><font><font>表的大部分时间</font><font>中可以找到一个完整的授权实施
 </font><font>。</font></font></p>
<div class="section" id="s-authorization-for-anonymous-users">
<span id="s-anonymous-auth"></span><span id="authorization-for-anonymous-users"></span><span id="anonymous-auth"></span><h4><font><font>匿名用户的授权</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authorization-for-anonymous-users" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<div class="versionchanged">
<span class="title"><font><font>在Django 1.2更改：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.2/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font><font>一位不愿透露姓名的用户是一个未验证的，​​即他们没有提供有效的身份验证细节。</font><font>然而，这并不一定意味着他们没有被授权做任何事情。</font><font>在最基本的层面上，大多数网站授权匿名用户浏览网站，以及许多允许匿名发布评论等等。</font></font></p>
<p><font><font>Django的权限框架，没有一个地方来存储的匿名用户的权限。</font><font>然而，它有一个基础，允许自定义身份验证后端为匿名用户指定的授权。</font><font>这是可重复使用的应用程序，可以委托授权的所有问题的auth后端，而不是需要设置，例如，以控制匿名访问，作者特别有用。</font></font></p>
</div>
<div class="section" id="s-authorization-for-inactive-users">
<span id="authorization-for-inactive-users"></span><h4><font><font>非活动用户的授权</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authorization-for-inactive-users" title="固定链接到这个标题"><font><font>¶</font></font></a></h4>
<div class="versionadded">
<span class="title"><font><font>在Django 1.3的新功能：</font></font></span> <a class="reference internal" href="https://docs.djangoproject.com/en/1.4/releases/1.3/"><em><font><font>请参阅发行说明</font></font></em></a></div>
<p><font><font>一个无效的用户，进行身份验证，但其属性
 </font></font><tt class="docutils literal"><span class="pre"><font><font>的is_active</font></font></span></tt><font><font>设置为False </font></font><tt class="xref docutils literal"><span class="pre"><font><font>的</font></font></span></tt><font><font>。</font><font>然而，这并不意味着他们没有被授权做任何事情。</font><font>例如，允许他们来激活他们的帐户。</font></font></p>
<p><font><font>为支持匿名用户许可制度，允许匿名用户有权限做一些事情，而不是无效的身份验证的用户做。</font></font></p>
<p><font><font>为了使自己的后端，你必须设置</font><tt class="xref docutils literal"><span class="pre"><font>为</font></span></tt><font> True 的阶级属性
 </font></font><tt class="docutils literal"><span class="pre"><font><font>supports_inactive_user</font></font></span></tt><font><font>。</font></font><tt class="xref docutils literal"><span class="pre"><font></font></span></tt><font></font></p>
<p><font><font>一个不存在的</font></font><tt class="docutils literal"><span class="pre"><font><font>supports_inactive_user</font></font></span></tt><font><font>属性将引发
 </font></font><tt class="docutils literal"><span class="pre"><font><font>PendingDeprecationWarning</font></font></span></tt><font><font>如果在Django 1.3。</font><font>在Django 1.4，这一警告将更新到</font></font><tt class="docutils literal"><span class="pre"><font><font>DeprecationWarning</font></font></span></tt><font><font>这将显示大声。</font><font>，此外</font></font><tt class="docutils literal"><span class="pre"><font><font>supports_inactive_user</font></font></span></tt><font><font>将设置</font></font><tt class="xref docutils literal"><span class="pre"><font><font>为</font></font></span></tt><font><font> False </font><font>。</font><font>Django的1.5将承担每个后端支持授权方式被传递到非活动用户。</font></font></p>
</div>
</div>
<div class="section" id="s-handling-object-permissions">
<span id="handling-object-permissions"></span><h3><font><font>处理对象的权限，</font></font><a class="headerlink" href="https://docs.djangoproject.com/en/1.4/topics/auth/#handling-object-permissions" title="固定链接到这个标题"><font><font>¶</font></font></a></h3>
<p><font><font>Django的许可框架为对象的权限的基础，它虽然没有在执行的核心。</font><font>这意味着，检查对象的权限将始终</font></font><tt class="xref docutils literal"><span class="pre"><font><font>返回</font></font></span></tt><font><font> False </font><font>或一个空列表（取决于进行检查）。</font></font></p>
</div>
</div>
</div>



<div id="content-secondary">
  <h2 id="comments"><font><font>问题/意见</font></font></h2>
  <p><font><font>有麻烦吗？</font><font>我们愿意帮助！</font></font></p>
  <ul>
    <li><font><font>
      尝试</font></font><a href="https://docs.djangoproject.com/en/1.4/faq/"><font><font>问题</font></font></a><font><font> 
      -它有许多常见问题的答案。
    </font></font></li>
    <li><font><font>
      在信息检索</font></font><a href="http://groups.google.com/group/django-users/"><font><font>档案的Django用户邮件列表</font></font></a><font><font>，或</font></font><a href="http://groups.google.com/group/django-users/"><font><font>张贴问题</font></font></a><font><font>。
    </font></font></li>
    <li><font><font>
      问</font></font><a href="irc://irc.freenode.net/"><font><font>＃Django的IRC频道</font></font></a><font><font>中的一个问题</font><font>，或搜索</font></font><a href="http://django-irc-logs.com/"><font><font>的IRC日志，</font></font></a><font><font>如果它已被问过。
    </font></font></li>
    <li><font><font>
      如果您发现本文档中的错误，请</font></font><a href="https://code.djangoproject.com/newticket?component=Documentation"><font><font>
      开出罚单，</font></font></a><font><font>并让我们知道！</font><font>请只使用批评和改进的文档票跟踪。</font><font>如需技术支持，使用上述资源。
    </font></font></li>
  </ul>
</div>

		</div>
		<!-- END #content-main -->
		<div id="content-related" class="sidebar">
		
  
    <h2><font><font>搜索</font></font></h2>
    
    <form action="https://docs.djangoproject.com/search/" id="sidebar_search" class="search">
  <div>
    <p>
      <input type="search" name="q" id="id_sidebar_search_q">
    </p>
    <p>
      <label for="id_sidebar_search_release"><font><font>版本：</font></font></label>
      <select name="release" id="id_sidebar_search_release">
<option value="2"><font><font>Django的1.0</font></font></option>
<option value="3"><font><font>Django的1.1</font></font></option>
<option value="4"><font><font>Django的1.2</font></font></option>
<option value="5"><font><font>Django的1.3</font></font></option>
<option value="6" selected="selected"><font><font>Django的1.4</font></font></option>
<option value="1"><font><font>发展干线</font></font></option>
</select>
    </p>
    <p>
      <font><font><input type="submit" class="submit" value="搜索"></font></font>
    </p>
  </div>
</form>
  

  
    <h2><font><font>内容</font></font></h2>
    
      <ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#"><font><font>在Django中的用户身份验证</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#overview"><font><font>概观</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#installation"><font><font>安装</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#users"><font><font>用户</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#api-reference"><font><font>API参考</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#fields"><font><font>领域</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#methods"><font><font>方法</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#manager-functions"><font><font>管理职能</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#basic-usage"><font><font>基本用法</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#creating-users"><font><font>创建用户</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#changing-passwords"><font><font>更改密码</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords"><font><font>Django如何存储密码</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#using-bcrypt-with-django"><font><font>使用Django的bcrypt</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#increasing-the-work-factor"><font><font>增加工作因素</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#password-upgrading"><font><font>密码升级</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#anonymous-users"><font><font>匿名用户</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#creating-superusers"><font><font>创建超级用户</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users"><font><font>存储有关用户的其他信息</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authentication-in-web-requests"><font><font>Web请求的身份验证</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-to-log-a-user-in"><font><font>如何记录用户</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#manually-managing-a-user-s-password"><font><font>手动管理用户的密码</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#how-to-log-a-user-out"><font><font>如何记录用户出</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#login-and-logout-signals"><font><font>登录和注销的信号</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-users"><font><font>限制登录用户的访问</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#the-raw-way"><font><font>原始的方式</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#the-login-required-decorator"><font><font>login_required装饰</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth.views"><font><font>其他内置的看法</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#helper-functions"><font><font>辅助函数</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#module-django.contrib.auth.forms"><font><font>内置的形式</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-users-that-pass-a-test"><font><font>限制访问登录的用户通过测试</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#the-permission-required-decorator"><font><font>permission_required装饰</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-generic-views"><font><font>限制访问的通用视图</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#function-based-generic-views"><font><font>基于函数的通用视图</font></font></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#permissions"><font><font>权限</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#default-permissions"><font><font>默认权限</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions"><font><font>自定义权限</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id5"><font><font>API参考</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id6"><font><font>领域</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id7"><font><font>方法</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#programmatically-creating-permissions"><font><font>以编程方式创建的权限</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authentication-data-in-templates"><font><font>在模板中的身份验证数据</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id8"><font><font>用户</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id9"><font><font>权限</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#groups"><font><font>团体</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id10"><font><font>API参考</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#id11"><font><font>领域</font></font></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#other-authentication-sources"><font><font>其他的认证源</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#specifying-authentication-backends"><font><font>指定的认证后端</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#writing-an-authentication-backend"><font><font>编写一个认证后端</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#handling-authorization-in-custom-backends"><font><font>在定制的后端处理授权</font></font></a><ul>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authorization-for-anonymous-users"><font><font>匿名用户的授权</font></font></a></li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#authorization-for-inactive-users"><font><font>非活动用户的授权</font></font></a></li>
</ul>
</li>
<li><a class="reference internal" href="https://docs.djangoproject.com/en/1.4/topics/auth/#handling-object-permissions"><font><font>处理对象的权限</font></font></a></li>
</ul>
</li>
</ul>
</li>
</ul>

    
  
  
    <h2><font><font>浏览</font></font></h2>
    <ul>
      
        
          <li><font><font>上一篇：</font></font><a href="https://docs.djangoproject.com/en/1.4/topics/testing/"><font><font>测试Django应用程序</font></font></a></li>
        
        
          <li><font><font>下一页：</font></font><a href="https://docs.djangoproject.com/en/1.4/topics/cache/"><font><font>Django的缓存框架</font></font></a></li>
        
        <li><a href="https://docs.djangoproject.com/en/1.4/contents/"><font><font>内容表</font></font></a></li>
        
          <li><a href="https://docs.djangoproject.com/en/1.4/genindex/"><font><font>总指数</font></font></a></li>
        
          <li><a href="https://docs.djangoproject.com/en/1.4/py-modindex/"><font><font>Python模块指数</font></font></a></li>
        
      
    </ul>
  

  
    <h2><font><font>您在这里：</font></font></h2>
    <ul>
      
        <li>
          <a href="https://docs.djangoproject.com/en/1.4/"><font><font>Django的1.4文件</font></font></a>
          
            <ul><li><a href="https://docs.djangoproject.com/en/1.4/topics/"><font><font>使用Django</font></font></a>
          
          <ul><li><font><font>在Django中的用户身份验证</font></font></li></ul>
          </li></ul>
        </li>
      
    </ul>

    
      <h2><font><font>下载：</font></font></h2>
      <p><font><font>
      
        离线（Django的1.4）：
         </font></font><a href="https://www.djangoproject.com/m/docs/django-docs-1.4-en.zip"><font><font>HTML</font></font></a><font><font> |
         </font></font><a href="http://media.readthedocs.org/pdf/django/1.4.X/django.pdf"><font><font>PDF</font></font></a><font><font> |
         </font></font><a href="http://media.readthedocs.org/epub/django/1.4.X/django.epub"><font><font>EPUB </font></font></a>
      
      <br>
      <span class="quiet"><font><font>通过</font></font><a href="http://readthedocs.org/"><font><font>阅读文档</font></font></a><font><font>。
      </font></font></span></p>
    
  

		</div>
		<!-- END #content-related -->

    </div>
    <!-- END #content -->
    <div id="footer">
      <p><font><font>©2005-2012年</font></font><a href="https://www.djangoproject.com/foundation/"><font><font>的Django软件基金会</font></font></a><font><font>除非另有说明。</font><font>Django是一个Django的软件基金会的注册商标。
       </font></font><a href="http://mediatemple.net/"><font><font>Linux网页托管</font></font></a><font><font>客客气气媒体寺提供。
      </font></font></p>
    </div>
    <!-- END #footer -->
  </div>
  <!-- END #container --><div id="goog-gt-tt" class="skiptranslate"><div style="overflow:hidden"><div class="logo"><img src="./Django的   在Django Django文档的用户身份验证2222222_files/mini_google(1).png"></div><a class="close-button" href="javascript:void(0)" title="Close"><img src="./Django的   在Django Django文档的用户身份验证2222222_files/cleardot(1).gif" width="15" height="15" style="background-image:url(http://translate.googleapis.com/translate_static/img/te_ctrl3.gif); background-position:-28px 0px"></a></div><div class="top"><hr style="color: #CCC; background-color: #CCC; height: 1px; border: none;"><div class="title left">Original Text:</div></div><div class="middle"><div class="original-text"></div></div><div class="bottom"><div class="activity-links"><span class="activity-link">Show alternative translations</span></div><div class="started-activity-container"><hr style="color: #CCC; background-color: #CCC; height: 1px; border: none;"><div class="activity-root"></div></div></div><div class="status-message" style="display: none; "></div></div>
  


</body></html>